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

Silverlight 如果我用不同的值在setter中更改绑定数据,如何刷新绑定数据,silverlight,mvvm,inotifypropertychanged,Silverlight,Mvvm,Inotifypropertychanged,我需要在silverlight中更改文本框的格式。数据通过MVVM进行绑定 对于ex,有一个int属性,我将1添加到setter中的值,并调用OnPropertyChanged。我想如果我在文本框中输入1并丢失foucs,文本将变为2。但实际上文本没有改变,仍然是1 <TextBox Name="txtTime" Text="{Binding PersonID, Mode=TwoWay}" /> private int _personID; publ

我需要在silverlight中更改文本框的格式。数据通过MVVM进行绑定

对于ex,有一个int属性,我将1添加到setter中的值,并调用OnPropertyChanged。我想如果我在文本框中输入1并丢失foucs,文本将变为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");
             } 
        }

私人国际人格;
公共int人格
{
得到
{
返回人形;
} 
设置
{
_personID=value+1;
关于财产变更(“PersonID”);
} 
}
有什么问题吗?正确的方法是什么


非常感谢

当TextBox设置某些值时,它不会调用get。解决此问题的方法可能类似于将OnPropertyChanged(“PersonID”)替换为Dispatcher.BeginInvoke(()=>OnPropertyChanged(“PersonID”);它将延迟触发该事件

public int PersonID
{
        get
        {
            return _personID;
        } 
        set
        {
            _personID = value + 1;
            Dispatcher.BeginInvoke(() => OnPropertyChanged("PersonID"));
        }
}

希望这能回答您的问题

您的代码看起来不错。。。但是什么是改变了的属性?它实际上是引发事件还是仅仅调用处理程序?它是viewmodel中的一个方法。它在其他情况下确实有效