2

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

例如,有一个 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");
             } 
        }

有什么问题吗?这样做的正确方法是什么?

非常感谢

4

1 回答 1

2

当 TextBox 设置一些值时,它不会调用 get。解决这个问题的方法可能是用 Dispatcher.BeginInvoke(() => OnPropertyChanged("PersonID")) 替换 OnPropertyChanged("PersonID");它会延迟触发该事件.

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

希望这能回答你的问题

于 2012-10-23T14:19:26.170 回答