在其他ListView的SelectionChanged事件上更新ListView

时间:2016-03-11 11:55:17

标签: c# wpf listview data-binding

我有一个ListView项目,当用户点击某个项目时,我希望其他ListView显示其他项目列表,其他项目依赖于ListView所选项目的ID 我有一个ServiceManager类,它从服务器异步接收对象并将它们传递给DataManager类,DataManager类在必要时通过ServiceManager需要对象并存储这些对象。
通常我会在XAML中绑定这些对象,如下所示:ItemsSource="Binding Instance.MyObjects, Source={StaticResource DataManager}",但这次我必须将该ID作为参数传递给ServiceManager方法。
那么如何在第一个ListView的{​​{1}}事件中更新第二个ListView

1 个答案:

答案 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