我有像这样的虚拟
class Vm : Notifiable
{
public string Name
{
get { return _Name; }
set { _Name = value; OnPropertyChanged("Name"); }
}
private _Name = "";
}
还有这样的
class CollectionVm : Notifiable
{
public ObservableCollection<Vm> Vms {get;set;}
public Vm Selected
{
get { return _Selected; }
set { _Selected= value; OnPropertyChanged("Selected"); }
}
Vm _Selected = null;
}
第三个像这样
class OuterVm : Notifiable
{
CollectionVm _collection;
public Vm Display
{
get {return _collection.Selected; }
}
}
和这样的绑定
<TextBlock Text={Binding Display.Name}/>
我的问题是,当集合中的选择发生变化时,文本块不会更新。我怎么能这样做呢?
答案 0 :(得分:1)
这需要一种机制,您可以在PropertyChanged
中引发OuterVm
事件。
一个简单的选择是订阅事件并传递它们:
class OuterVm : Notifiable
{
public OuterVm()
{
// initialize _collection
_collection.PropertyChanged += (o,e) =>
{
if (e.PropertyName == "Selected")
OnPropertyChanged("Display");
};
}
CollectionVm _collection;
public Vm Display
{
get {return _collection.Selected; }
}
}