可以将XAML ItemSource绑定到由Where查询生成的IEnumerable

本文关键字:查询 Where IEnumerable XAML ItemSource 绑定 | 更新日期: 2023-09-27 18:06:20

我正在创建一个Windows Phone应用程序,并希望使用透视来显示相同数据的不同视图。

为了做到这一点,我创建了属性:
IEnumerable<Item> Items { get; set; };
IEnumerable<Item> ItemView1 { get { return Items.where(value => value.Property) }};        
IEnumerable<Item> ItemView2 { get { return Items.where(value => value.Property) }};

然后在我的视图中绑定它们:

<phone:PivotItem>
    <phone:LongListSelector ItemsSource="{Binding ItemView1}">
</phone:PivotItem>
<phone:PivotItem>
    <phone:LongListSelector ItemsSource="{Binding ItemView2}">
</phone:PivotItem>

添加项目到Items属性后,我调用:

NotifyPropertyChanged("ItemView1");
NotifyPropertyChanged("ItemView2");

然而,当我运行应用程序,我的视图没有得到更新的新结果,但它工作,如果我创建新的列表。难道不可能像这样直接绑定到结果吗?如果没有,有没有什么建议的方法,我应该做这样的事情,希望没有建立多个列表所有的时间?

可以将XAML ItemSource绑定到由Where查询生成的IEnumerable

您引发了错误的事件。

简单的内容绑定控件,如文本块等,如果上下文对象实现了该接口,则自动连接到INotifyPropertyChanged,但基于集合的控件(我认为基于选择器)查找INotifyCollectionChanged