将一个可观察的集合过滤到多个列表框中
在我的项目中,我目前有一个ObservableCollection,该>在ViewModel构造函数内部填充.此ObservableCollection保留一个具有两个属性(两个字符串)的自定义对象. 当前,XAML/View对应物包含两个单独的列表框,它们都符合到A DataTemplate的键,该列表选择了要显示的属性作为ListBox的条目.在这种情况下,它显示"属性". 是否可以拥有一个可以选择每个ListBox item的位置,取决于'propertytwo'的内容? 我研究了与我的情况类似的示例,这些示例使用了CollectionViewSource,但是我不太确定如何将其实施到项目中,因为我对使用WPF并遵循MVVM结构是相当陌生的.这是否涉及在代码视图中创建过滤事件? 下面列出的是我的代码段,我认为这对于理解我的问题很有用.解决此问题的任何帮助将不胜感激. 查看
4 2023-05-07
编程技术问答社区
麦德龙应用程序CollectionViewSource可观察的集合过滤器
看来,在 winrt 中无法用CollectionViewSource过滤ObservableCollection: 请参阅此处! 我可以使用 linq 过滤,但是如果进行了影响过滤数据的更改,我如何使 ui 更新? 解决方案 我最终写了自己的班级以达到所需的效果: public class ObservableCollectionView : ObservableCollection { private ObservableCollection _view; private Predicate _filter; public ObservableCollectionView(IComparer comparer) : base(comparer) { } public ObservableCollectionView(IComparer comparer,
错误:这种类型的收集视图不支持其源代码的更改
我有一个项目的观测值,我需要能够更新并使用IcollectionView表示数据. 这是代码的相关位: private ObservableCollection heroesDBHeroes; public ObservableCollection HeroesDBHeroes { get { return heroesDBHeroes; } set { heroesDBHeroes = value; OnPropertyChanged("HeroesDBHeroes"); } } private void HeroesDBAddHeroes() { if(HeroesDBHeroes != null) { HeroesDBHeroes.Clear(); } HeroesDBHeroes = Hero.GetA
2 2023-05-07
编程技术问答社区
如何在一个集合视图源上应用多个过滤功能,一个接一个(AND关系)。
我一直在使用绑定到listView的收集视图源对象,而CVS是可观察到的对象集合的视图. 我知道如何使用以下技术应用过滤器: cvs.Filter += new FilterEventHandler(SomeFilterFunction); 当您仅在一个函数中过滤时,这正常工作.问题是我想在已经过滤的CVS上过滤时.如果我具有基于不同标准过滤视图中对象的另一个函数,则仅根据第二个过滤器中的标准过滤对象,并且第一个过滤器的结果消失了. 这是一些示例代码来解释我的问题: cvs.Filter += new FilterEventHandler(SomeFilterFunction1); cvs.Filter += new FilterEventHandler(SomeFilterFunction2); public void SomeFilterFunction1(object sender, FilterEventArgs e) { SomeObj
0 2023-05-07
编程技术问答社区
如何用CollectionView的功能来处理一个CompositeCollection?
当CompositeCollection的当前位置更改时,是否有办法通知? 我需要通过收集视图监控CompoSiteCollection,任何想法都均为 . 解决方案 您可以通过监视收集视图的ICollectionView.CurrentChanged事件来检测当前项目何时更改.以下代码对我有用: CompositeCollection cc = new CompositeCollection(); cc.Add(new CollectionContainer { Collection = new string[] { "Oh No!", "Fie" } }); cc.Add(new CollectionContainer { Collection = new string[] { "Zounds", "Ods Bodikins" } }); CollectionViewSource cvs = new CollectionViewSource { Source =
6 2023-05-07
编程技术问答社区
在同一个集合上有不同的过滤器的WPF多集合视图
我使用的是A ObservableCollection,其中两个ICollectionView用于不同的过滤器. 一种用于通过某种类型过滤消息,其中一种用于计算检查消息. 如您所见,消息过滤器和消息计数正常运行,但是当我取消检查时,消息从列表中消失了(计数仍在工作). 顺便说一句,很抱歉,我想包括所有相关的内容. XAML代码:
2 2023-05-07
编程技术问答社区
WPF分页集合视图源
我有一个WPF ListBox,我想在上面添加分页,因为它开始使用大量项目开始缓慢.我的问题是我使用分组,排序和过滤.这意味着,如果我要使用linq skip()和take()方法限制数据,或者使用类似分页的ObservableCollection之类的内容,则分组和排序将是错误的,因为它仅应用于数据的第一页.过滤甚至会更糟,因为它只会过滤当前显示中显示的数据,这意味着您必须在页面上显示它才能搜索它. 我不太热衷于重写所有逻辑的想法.我看到Silverlight 3正在获得PageCollectionView(但据我所知,.NET 4中的WPF没有得到它)​​.有没有人以前实施过这样的事情,或者对我该如何解决这个问题有任何想法? 解决方案 查看我已经实施的简单分页的观测值 - 适用于Silverlight以及WPF
12 2023-04-13
编程技术问答社区
数据网格分组在CollectionViewSource中变化时不更新
我有一个collectionViewSource CollectionOfVideos绑定到ObservableCollection ListOfVideos.该CollectionViewSource是DataGrid dataGrid_Video的项目源.我已经通过ListOfVideos的label lShortName实现了一个分组.当项目添加到dataGrid中时,分组似乎可以工作,因为IT分组所有默认项label. . 问题是,当项目更改时,分组不会更新.这是我的代码: 窗口.
0 2023-04-07
编程技术问答社区
wpf mvvm threading.Timer and TimerCallback问题
我有一个针对MVVM框架开发的WPF应用程序,在该框架中,ViewModel构造函数设置了带有TimerCallback的计时器. TimerCallback检索观测值并将其传递到VM上的字段. 我有一个CollectionViewSource,其源属性设置为ObservableCollection.我正在使用CollectionViewSource,因为我想在集合上启用过滤. 我发现,当TimerCallback试图将ObservableCollection传递到本地字段时,CollectionViewSource的源属性有一个异常{"调用线程无法访问此对象,因为一个不同的线程拥有它.}. 我理解例外,但我有两个问题: 如何解决这个问题? 更重要的是,为什么我只有在使用CollectionViewSource时才能遇到这个问题?如果我删除CollectionViewSource并将ObservableCollection作为公共财产,那么我就没有这样的例
4 2023-04-07
编程技术问答社区
WPF MVVM结构的选定项目
我目前正在实施显示层次结构使用ListBoxes(请不要建议使用TreeView,ListBoxes). 看起来 类: public class Mountains : ObservableCollection { public ObservableCollection Lifts { get; } public string Name { get; } } public class Lift { public ObservableCollection Runs { get; } } 该示例使用CollectionViewSource实例(请参阅XAML)来简化设计. Mountains类的实例是窗口的DataContext. 问题是:我希望Mountains类具有SelectedRun属性,应将其设置为当前选择的运行. public class Mountains : Obse
6 2023-04-07
编程技术问答社区
在CollectionViewSource上触发过滤器
我正在使用MVVM模式处理WPF桌面应用程序. 我试图根据TextBox中键入的文本从A ListView中过滤一些项目.我希望在更改文本时过滤ListView项目. 我想知道当过滤器文本更改时如何触发过滤器. ListView与CollectionViewSource结合,该>在我的ViewModel上结合ObservableCollection.过滤文本的TextBox与ViewModel上的字符串结合,并具有UpdateSourceTrigger=PropertyChanged.
6 2023-04-07
编程技术问答社区
在组合框中对项目进行分组
i有一个列表视图,其中包含两种类型的对象,单个和多个. 单曲是普通的文本块,而多个是与项目的组合. 我正在尝试将这些项目分组为Combobox而没有成功.是否可以?还是我应该选择其他方法? 我要实现的目标: [ComboBox v] [Header ] [ Item] [ Item] [Header ] [ Item] 解决方案 这是可能的.使用 listCollectionView 与groupscription并且只需为您的组合提供一个集体风格即可.请参阅下面的示例: xaml:
0 2023-04-07
编程技术问答社区
WPF CollectionViewSource多视图?
我已经编写了一个带有搜索扩展名的自定义WPF控件,让我们命名MyControl. 控件是ItemsControl类的后裔. 因此,我这样的数据源将其提供给: 控件本身使用 protected override void OnItemsSourceChanged(System.Collections.IEnumerable oldValue, System.Collections.IEnumerable newValue) { if (newValue != null) { ICollectionView view = CollectionViewSource.GetDefaultView(newValue); view.Filter += this.FilterPredicate; } if (oldValue != null) { ICollectionView view = C
14 2023-03-31
编程技术问答社区
在windows metro应用程序中的CollectionViewSource
我有一个集合,我需要3种不同的视图 1.收集的所有数据 2.分组数据(分组标准将在应用程序生命周期期间修改) 3.过滤数据(将在应用程序生命周期期间修改过滤标准) 我想要的是,所有视图都应绑定到同一集合,以便将收集的任何更改都同步到所有视图. 使用WPF,可以使用如何在现代UI应用中实现Collection同步? 解决方案 显然,您被要求在WinRT中使用Linq执行分类,分组和过滤. CollectionViewSource 出现仅提供一个共同的视图,要在控件之间共享.
2 2023-03-27
编程技术问答社区
对CollectionViewSource的困惑(SelectedItem在组合中不起作用)。
我有一堆连击,它们都共享相同的可用选择.这些选择是在我的ViewModel暴露的集合中提供的.一切都很好,花花公子. 我现在要分类这些选择,因此我决定从我的ViewModel而不是通常的ReadonlyObservableCollection中露出ICollectionView,然后在我的ViewModel中对集合视图进行排序. class EditStuffViewModel : ViewModelBase { public EditStuffViewModel (ObservableCollection choices) { Choices = new CollectionViewSource() { Source = choices }.View; Choices.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.As
12 2023-03-20
编程技术问答社区
当单个项目的属性发生变化时,如何自动更新CollectionViewSource的过滤器和/或排序顺序?
好,所以这个问题与Windows Phone 7/Silverlight有关(更新WP7工具,2010年9月),专门过滤了下面的ObservableCollection. 在使用WP7模板枢轴控制应用程序时,我遇到了一个问题,在该问题中,更改ObservableCollection中的基础项目不会导致更新的屏幕上的列表框.基本上,示例应用程序具有两个枢轴,第一个枢轴直接绑定到下面的ObservableCollection,第二个枢轴与CollectionViewSource绑定(即,在基础ObservableCollection上表示过滤的视图). . 正在添加到ObservableCollection实施INotifyPropertyChanged的基础项目,例如: public class ItemViewModel : INotifyPropertyChanged { public string LineOne
8 2023-03-18
编程技术问答社区
如何从CollectionViewSource中添加或删除一个项目?
我想将datagrid.itemsource绑定到带有匿名类型的列表中,因此我将其绑定到CollectionViewSource,但是我需要将项目添加或删除到列表中,但是我不知道如何? 解决方案 CollectionView和CollectionViewSource顾名思义,只有视图.您只能操纵原始系列.如果您希望自动反映在UI中的更改,则应使用ObservableCollection. 我建议不要使用匿名类型进行数据绑定.但是,如果您必须 - 他们实现了等值方法,因此您应该能够使用具有同等属性或使用项目索引的新项目删除项目.
6 2023-03-10
编程技术问答社区