c# – 带有ObservableCollection和动态过滤器的Silverlight ListBox
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 带有ObservableCollection和动态过滤器的Silverlight ListBox,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1308字,纯文字阅读大概需要2分钟。
内容图文
让我们说我有这个课程:
public class MyData
{
public bool IsActive{get;set;}
public String Data1 {get;set;}
public String Data2 {get;set;}
}
和
ObservableCollection<MyData> data = new ObservableCollection<MyData>;
ListBox.ItemsSource = data;
按预期将项添加到ObservableCollectionworks;但是,我想确保我的列表框只显示IsActive设置为’true’的项目 – 我不能使用Linq查询来设置ItemsSource,因为它不是ObservableCollection,它的IEnumerable并没有做任何更新通知列表框.
解决方法:
你的答案是CollectionViewSource.而不是绑定到列表,绑定到CollectionViewSource的实例.
下面是一个稍微退化的示例(我不确定您是否使用ViewModels,Locators等来解析您的数据和列表.)
假设在您的标记中,您在资源中声明了一个CollectionViewSource,如下所示:
<phone:PhoneApplicationPage.Resources>
<CollectionViewSource x:Key="src"/>
</phone:PhoneApplicationPage.Resources>
然后你的列表绑定看起来像:
<ListBox x:Name="MyListBox" ItemsSource="{Binding Source={StaticResource src}}">
最后,在代码中,您可以将列表和集合视图源结合起来:
var collectionView = this.Resources["src"] as CollectionViewSource;
// Check for null, etc.
collectionView.Source = observableCollectionThatIAmBindingTo;
collectionView.View.Filter=new Predicate<Object>(o => ((ItemType)o).IsActive );
此外,您可以查看Bea Stollnitz关于该主题的文章:
http://bea.stollnitz.com/blog/?p=31
http://bea.stollnitz.com/blog/?p=392
内容总结
以上是互联网集市为您收集整理的c# – 带有ObservableCollection和动态过滤器的Silverlight ListBox全部内容,希望文章能够帮你解决c# – 带有ObservableCollection和动态过滤器的Silverlight ListBox所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。