我有一个ListView
项目,当用户点击某个项目时,我希望其他ListView
显示其他项目列表,其他项目依赖于ListView
所选项目的ID
我有一个ServiceManager类,它从服务器异步接收对象并将它们传递给DataManager类,DataManager类在必要时通过ServiceManager需要对象并存储这些对象。
通常我会在XAML中绑定这些对象,如下所示:ItemsSource="Binding Instance.MyObjects, Source={StaticResource DataManager}"
,但这次我必须将该ID作为参数传递给ServiceManager方法。
那么如何在第一个ListView
的{{1}}事件中更新第二个ListView
?
答案 0 :(得分:0)
您可以在 ServiceManager 中创建 CurrentItem 属性:
public MyItemType CurrentItem
{
get {
return _CurrentItem;
}
set {
_CurrentItem = value;
if(_CurrentItem != null)
MyObjects = LoadMyObjects(_CurrentItem.ID);
else
MyObjects = null;
}
}
在 CurrentItem 属性setter中加载第二个ListView的数据。绑定第一个ListView的 CurrentItem 属性:
<ListView ItemsSource="{Binding DataManager.Items}" SelectedItem="{Binding DataManager.CurrentItem}" />
这样,当第一个ListView的 SelectedItem 被更改时,将调用 CurrentItem 属性的属性设置器并且MyObjects正在更新。 (您应该为 ServiceManager 实施INotifyPropertChanged并在 MyObjects 属性设置器中调用 PropertyChnaged 。