我需要更改silverlight中文本框的格式。数据通过MVVM绑定。
对于ex有一个int属性,我在setter中添加1并调用OnPropertyChanged。我想如果我在文本框中输入1并丢失了文本,则文本将更改为2.但实际上文本不会更改,仍为1.
<TextBox Name="txtTime" Text="{Binding PersonID, Mode=TwoWay}" />
private int _personID;
public int PersonID
{
get
{
return _personID;
}
set
{
_personID = value + 1;
OnPropertyChanged("PersonID");
}
}
有什么不对吗?什么是正确的方法呢?
非常感谢答案 0 :(得分:2)
当TextBox设置一些值时,它不会调用get。对此的解决方案可能就像用Dispatcher.BeginInvoke(()=&gt; OnPropertyChanged(“PersonID”))替换OnPropertyChanged(“PersonID”);它将延迟解雇该事件。
public int PersonID
{
get
{
return _personID;
}
set
{
_personID = value + 1;
Dispatcher.BeginInvoke(() => OnPropertyChanged("PersonID"));
}
}
希望这能回答你的问题