Tenho a necessidade de definir um enlace no código.
Parece que não consigo acertar.
Isso é o que eu tentei:
XAML:
<TextBox Name="txtText"></TextBox>
Código por trás:
Binding myBinding = new Binding("SomeString");
myBinding.Source = ViewModel.SomeString;
myBinding.Mode = BindingMode.TwoWay;
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
BindingOperations.SetBinding(txtText, TextBox.TextProperty, myBinding);
ViewModel:
public string SomeString
{
get
{
return someString;
}
set
{
someString= value;
OnPropertyChanged("SomeString");
}
}
A propriedade não está sendo atualizada quando a configuro.
O que estou fazendo de errado?
c#
wpf
xaml
data-binding
Willem
fonte
fonte
Você precisa alterar a fonte para o objeto viewmodel:
fonte
Além da resposta do Dyppl , acho que seria bom colocar isso dentro do
OnDataContextChanged
evento:Também tivemos casos em que apenas salvamos o
DataContext
em uma propriedade local e usamos isso para acessar as propriedades do viewmodel. A escolha é naturalmente sua, gosto dessa abordagem porque é mais consistente com as demais. Você também pode adicionar alguma validação, como verificações de nulos. Se você realmente mudar de posiçãoDataContext
, acho que seria bom também chamar:para limpar a vinculação do modelo de visão antigo (
e.oldValue
no manipulador de eventos).fonte