【发布时间】:2017-01-23 20:47:13
【问题描述】:
有很多关于 WPF 中 CollectionViewSource 上的过滤、分组和排序的讨论,以及什么是不实用的“MVVM”(尤其是在代码隐藏中添加过滤器时)。
我想让 ViewModel 控制这些属性(例如添加排序和过滤描述符),但是为了将 SynchronizationContext 与异步 ObservableCollection 一起使用,我需要在视图中(在调度程序线程上)实例化 CollectionViewSource,而不是在模型中实例化 - 但模型需要访问 CollectionViewSource 才能从代码中添加过滤器、分组和排序描述符,而不是在 XAML 中定义它们。
为此,我想找到一种将 XAML 声明的 CollectionViewSource 对象绑定回 ViewModel 的方法。像这样的:
<UserControl.Resources>
<CollectionViewSource
IsLiveFilteringRequested="True"
x:Name="collectionViewSource"
x:Key="collectionViewSource"
Source="{Binding DataContext.myCollection, IsAsync=True}"
Binding="{Binding DataContext.myCollectionViewSourceProperty, Mode=OneTime}" />
</UserControl.Resources>
当然,CollectionViewSource 没有“Binding”属性,源必须指向 ObservableCollection。
有没有办法做到这一点?
【问题讨论】:
标签: wpf mvvm binding collectionviewsource