En el ejemplo siguiente, hemos vinculado un ViewModel a una vista con una sola propiedad llamada Message. Esta propiedad está vinculada a un TextBox con un enlace bidireccional. Para esta prueba, estamos haciendo algo de coerción de valor en el colocador y elevando la propiedad cambiada de nuevo.Coerce Value en Property Setter - Silverlight 5
En Silverlight 4, esto funcionó a la perfección. Si la propiedad del mensaje cambió en el establecimiento de propiedades, el cuadro de texto vería el nuevo valor. P.ej. escribir "A" en el cuadro de texto y perder el foco daría como resultado que apareciera Aaaaaaaaaaa a medida que se cambiaba el valor.
En Silverlight 5 sin embargo, esto parece estar roto/cambiado. El getter nunca se golpea después de que el valor se modifique en el setter. Agregar un IValueConverter en el medio, muestra que los métodos Convert/ConvertBack nunca se golpean. Parece que algo fundamental ha cambiado entre la versión 4 y 5. ¿Ha habido algún cambio? ¿Es esto un error?
public class ViewModel : INotifyPropertyChanged
{
private string _message;
public event PropertyChangedEventHandler PropertyChanged;
public string Message
{
get
{
return _message;
}
set
{
_message = value;
this.RaisePropertyChanged();
if (_message.Length < 10)
{
_message = _message.PadRight(10, 'a');
this.RaisePropertyChanged();
}
}
}
private void RaisePropertyChanged()
{
var handler = this.PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs("Message"));
}
}
}