C# 是否可以将XAML ItemSource绑定到Where查询生成的IEnumerable?
我正在创建一个Windows Phone应用程序,希望使用数据透视来显示相同数据的不同视图 为此,我创建了属性:C# 是否可以将XAML ItemSource绑定到Where查询生成的IEnumerable?,c#,linq,xaml,windows-phone,C#,Linq,Xaml,Windows Phone,我正在创建一个Windows Phone应用程序,希望使用数据透视来显示相同数据的不同视图 为此,我创建了属性: IEnumerable<Item> Items { get; set; }; IEnumerable<Item> ItemView1 { get { return Items.where(value => value.Property) }}; IEnumerable<Item> ItemView2 { get { retur
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) }};
然而,当我运行应用程序时,我的视图不会得到新结果的更新,但如果我创建新列表,它就会工作。
不可能像这样直接绑定到结果吗?
如果没有,是否有任何建议我应该这样做,希望不必一直构建多个列表?您提出了错误的事件
简单的内容绑定控件,如文本块等,如果上下文对象实现了该接口,则会自动连接到INotifyPropertyChanged,但基于集合的控件(我认为也基于选择器)会查找INotifyCollectionChanged。您不能将其更改为
Items.Where(x=>x.Property).ToList()
在您启动NotifyPropertyChanged后,它应该可以正常工作。您是否尝试过“{Binding Path=ItemView1}”?我不知道为什么这个答案有-1声誉,但@JerKimball是正确的ItemsSource依赖项属性订阅“INotifyCollectionChanged”事件。因此,您必须使用“ObservableCollection”或创建自己的实现“INotifyCollectionChanged”接口的集合实现。有关更多详细信息,您可以查看:“为了让列表框拾取更改,您必须重新创建员工列表,并将其重新附加到列表框的ItemsSource属性。”
<phone:PivotItem>
<phone:LongListSelector ItemsSource="{Binding ItemView1}">
</phone:PivotItem>
<phone:PivotItem>
<phone:LongListSelector ItemsSource="{Binding ItemView2}">
</phone:PivotItem>
NotifyPropertyChanged("ItemView1");
NotifyPropertyChanged("ItemView2");