如果我在setter中用不同的值更改绑定数据,如何刷新绑定数据

时间:2012-10-22 22:14:42

标签: silverlight mvvm inotifypropertychanged

我需要更改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");
             } 
        }

有什么不对吗?什么是正确的方法呢?

非常感谢

1 个答案:

答案 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"));
        }
}

希望这能回答你的问题