在下面的示例中,我们将ViewModel绑定到一个具有名为Message的单个属性的视图。该属性绑定到具有双向绑定的TextBox。对于此测试,我们在setter中进行了一些值强制,并再次引发了属性更改。
在Silverlight 4中,这完美地工作。如果消息属性在属性setter中更改,则文本框将看到新值。例如,在文本框中键入“A”并失去焦点会导致Aaaaaaaaaaa出现,因为值已更改。
然而,在Silverlight 5中,这似乎被破坏/更改了。在值在setter中修改后,getter永远不会被触发。在中间添加IValueConverter表明Convert/ConvertBack方法永远不会被触发。似乎在第4版和第5版之间发生了一些根本性的变化。是否有任何更改?这是一个错误吗?
在Silverlight 4中,这完美地工作。如果消息属性在属性setter中更改,则文本框将看到新值。例如,在文本框中键入“A”并失去焦点会导致Aaaaaaaaaaa出现,因为值已更改。
然而,在Silverlight 5中,这似乎被破坏/更改了。在值在setter中修改后,getter永远不会被触发。在中间添加IValueConverter表明Convert/ConvertBack方法永远不会被触发。似乎在第4版和第5版之间发生了一些根本性的变化。是否有任何更改?这是一个错误吗?
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"));
}
}
}