【问题标题】:Calling property changed on a bound element在绑定元素上调用属性更改
【发布时间】:2011-09-28 11:22:06
【问题描述】:

我的视图模型为我的视图可用的属性实现了 INotifyPropertyChanged。它使未实现 INotifyPropertyChanged 的​​对象集合可用。

在我的视图中,我的集合绑定到一个 ItemControl,其中一个 ItemTemplate 用于单独显示每个项目。项目模板绑定到我的集合成员的名称属性。

当我的集合成员的属性发生变化时,我如何告诉我的视图更新?

【问题讨论】:

    标签: wpf mvvm inotifypropertychanged


    【解决方案1】:

    您需要为集合中的对象实现INotifyPropertyChanged(推荐方法),或者您可以通过类似的方式手动刷新绑定

    myItemsControl.GetBindingExpression(
         ItemsControl.ItemsSourceProperty).UpdateTarget();
    

    如果您在 ViewModel 中,您可能可以在 Collection 类上引发 PropertyChanged 事件,如下所示,尽管我不确定这是否会更新各个项目

    // My PropertyChanged method is usually called RaisePropertyChanged
    RaisePropertyChanged("MyCollection");  
    

    您也可以按照 Mirimon 的建议进行操作,然后将值设置为 null,然后再返回,尽管我个人建议尽可能采用不同的方法。

    【讨论】:

      【解决方案2】:

      您必须为集合成员实现 INotifyPropertyChanged。或者您可以在 ViewModel 中重置您的集合:

      public void Reset() {
          List<TestData> temp = YourCollection;
          YourCollection = null;
          YourCollection = temp;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-06
        • 2023-01-30
        • 1970-01-01
        • 2011-08-10
        • 2013-08-14
        • 2014-09-27
        • 1970-01-01
        相关资源
        最近更新 更多