Tengo la necesidad de establecer un enlace en el código.
Aunque parece que no puedo hacerlo bien.
Esto es lo que he probado:
XAML:
<TextBox Name="txtText"></TextBox>
Código detrá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");
}
}
La propiedad no se actualiza cuando la configuro.
¿Qué estoy haciendo mal?
c#
wpf
xaml
data-binding
Willem
fuente
fuente
Necesita cambiar la fuente al objeto viewmodel:
fuente
Además de la respuesta de Dyppl , creo que sería bueno colocar esto dentro del
OnDataContextChanged
evento:También hemos tenido casos en los que simplemente guardamos el
DataContext
archivo en una propiedad local y lo usamos para acceder a las propiedades del modelo de vista. La elección es, por supuesto, suya, me gusta este enfoque porque es más consistente con el resto. También puede agregar alguna validación, como verificaciones nulas. Si realmente cambia suDataContext
entorno, creo que sería bueno llamar también:para borrar el enlace del modelo de vista antiguo (
e.oldValue
en el controlador de eventos).fuente