从MVVM应用程序中的ViewModel筛选Telerik WPF RadGridView

从MVVM应用程序中的ViewModel筛选Telerik WPF RadGridView,wpf,mvvm,telerik,radgridview,Wpf,Mvvm,Telerik,Radgridview,我想知道如何从我的ViewModel中操纵telerik RadGridView来过滤WPF的列,这让我发疯了。我以为我可以将FilterDescriptor的值绑定到ViewModel属性,但我得到了 找不到目标元素的管理FrameworkElement或FrameworkContentElement <telerik:CompositeFilterDescriptor> <telerik:FilterDescriptor Member

我想知道如何从我的ViewModel中操纵telerik RadGridView来过滤WPF的列,这让我发疯了。我以为我可以将FilterDescriptor的值绑定到ViewModel属性,但我得到了

找不到目标元素的管理FrameworkElement或FrameworkContentElement

<telerik:CompositeFilterDescriptor>
                    <telerik:FilterDescriptor Member="Foo.SomeProperty" Operator="IsContainedIn" Value="{Binding SelectedThings}" />
                </telerik:CompositeFilterDescriptor>

其中Foo.SomeProperty是绑定到网格列的VM属性,SelectedThings是包含要筛选的唯一值的字符串化数组的VM属性

GridView绑定到QueryableCollectionView

我希望过滤在运行时工作,基于VM-ex中的一些自定义逻辑。用户单击一些按钮,VM限制其中一列的不同值

这不应该这么难。我一定是走错路了。我一直在为其他stackoverflow问题烦恼,但还没有找到有效的解决方案。如有任何建议,将不胜感激

更新

我仍然希望用一种完全的MVVM方法来实现这一点,但目前我决定不再对此发疯,而是用以下方式来解决这个问题

ViewModel的ObservableCollection绑定到代表某些筛选条件的复选框列表,由用户通过GUI进行更新

属性更改后,ViewModel通过Messenger(MVVMLIGHT)发送一条消息,该消息在codebehind中已注册为接收。该消息包括筛选条件信息

codebehind接收它并将其直接应用于GridView

这样做的好处是它避免了连接任何依赖属性或其他事件处理程序,并允许VM保持对视图实现的无知。这很简单,而且很有效

是的,现在有一些代码,但在我找到一些关于如何纯粹通过MVVM绑定解决这个问题的更好信息之前,这是一个可行的解决方案


但愿我昨天早上9点就这么做了,而不是整天盯着墙看Telerik的蹩脚文档,寻找如何“以正确的方式”做这件事的例子。嗯。

我猜绑定不起作用,因为“FilterDescriptor”不是可视化树的一部分。。。可能使用数据上下文代理?瞧,你又回到这个案子上来了,麦加纳格!非常感谢。这很好,即使它有点粗糙。总比用GUI操作代码捏造我的代码要好。