【问题标题】:How to refresh binding data if i change it in setter with different value如果我在设置器中使用不同的值更改绑定数据,如何刷新绑定数据
【发布时间】:2012-10-22 22:14:42
【问题描述】:

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

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

非常感谢

【问题讨论】:

  • 您的代码看起来不错...但是OnPropertyChanged 是什么?它实际上是引发事件,还是只是调用处理程序?
  • 这是视图模型中的一种方法。它在其他情况下确实有效

标签: silverlight mvvm inotifypropertychanged


【解决方案1】:

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

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

希望这能回答你的问题

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 2017-04-19
    • 2011-07-21
    • 1970-01-01
    • 2020-09-10
    • 2011-06-23
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    相关资源
    最近更新 更多