首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将XAML定义的CollectionViewSource绑定到ViewModel

将XAML定义的CollectionViewSource绑定到ViewModel
EN

Stack Overflow用户
提问于 2016-09-15 18:08:19
回答 1查看 1K关注 0票数 2

在WPF中,对于CollectionViewSource上的筛选、分组和排序有很多讨论,什么不是"MVVM"-practical (特别是在代码后面添加过滤器时)。

我想让ViewModel控制这些属性(比如添加排序和筛选描述符),但是为了在异步ObservableCollection中使用SynchronizationContext,我需要在视图中(在dispatcher线程上)实例化CollectionViewSource,而不是在模型中实例化--但是模型需要访问CollectionViewSource,以便从代码中添加过滤器、组和排序描述符,而不是在XAML中定义它们。为此,我想找到一种将XAML声明的CollectionViewSource对象绑定回ViewModel的方法。就像这样:

代码语言:javascript
运行
复制
<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没有一个“绑定”属性,而且源必须指向一个ObservableCollection。

有办法做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-15 19:39:34

我最初的想法是让CollectionViewSource在- XAML中定义并实例化,然后使用某种形式的附加属性将筛选器、组和排序属性绑定到视图模型上的值。可以肯定的是,here已经完成了(而且似乎起作用了)。

这将解决您的问题,因为CollectionViewSource将在Dispatcher线程上实例化,但可以从视图模型(确保dispatcher线程上也发生绑定属性更改)来控制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39517652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档