我有一个绑定到VM的usercontrol。这个VM包含一个集合属性,让我们称之为“MyCollection”,并且几个常规属性允许调用其中一个“SomeProperty”。如您所见,此属性的get和set逻辑引用VM中的集合。
问题是,当我对“MyCollection”进行更改时,这显然会对UI中显示的值产生影响(因为它们是基于它计算的)。但是,当“MyCollection”发生变化时,我的UI似乎不够智能,无法自我更新。
这是我的usercontrol绑定的VM:
public class MyVM
{
private ObservableCollection<SomeOtherVM> _myCollection = new ObservableCollection<SomeOtherVM>();
public MyVM()
{
}
public ObservableCollection<SomeOtherVM> MyCollection
{
get { return _myCollection; }
[Notify]
set
{
_myCollection = value;
}
}
public virtual string SomeProperty
{
get
{
if (_myCollection.Count == 1)
return _myCollection[0].SomeProperty;
else
return "More than one "SomeOtherVM" has been selected";
}
[Notify]
set
{
foreach (SomeOtherVM s in _myCollection)
{
s.SomeProperty = value;
}
}
}
}
}
请注意,我的usercontrol中没有任何内容直接绑定到集合,它只绑定到其get中引用集合的其他属性;组;方法
当“MyCollection”发生变化时,我在VM中可以做些什么来强制UI更新?我想避免在代码中添加任何内容以供用户控制。
答案 0 :(得分:4)
订阅CollectionChanged
的{{1}}并点击MyCollection
- 其他属性的通知(没有您喜欢的属性用途)。