【发布时间】:2015-01-25 06:05:24
【问题描述】:
我遇到了一个新问题。
我有一个 DataGrid 和一个 TextBox。我想根据 TextBox 的值过滤 DataGrid。
我已经使用MarkupExtensions 完成了这项工作,正如提到的here。
现在它可以正常工作,直到 Value 属性(上面链接中提到的 PropertyFilter 类的属性)是 XAML 中提到的字符串。当我将其更改为绑定时,它停止工作。这是我的带有绑定的 XAML:
<CollectionViewSource x:Key="GroupsViewSource" Source="{Binding Groups}">
<CollectionViewSource.Filter>
<me:Filter>
<me:PropertyFilter PropertyName="GroupName"
Value="{Binding SearchGroupName}" />
</me:Filter>
</CollectionViewSource.Filter>
</CollectionViewSource>
SearchGroupName 是我的 ViewModel 中字符串类型的简单属性。
我也尝试过如下更改绑定:
Value = "{Binding DataContext.SearchGroupName, RelativeSource={RelativeSource
Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
我尝试使用 System.Diagnostics 对其进行调试,如下所示:
<CollectionViewSource x:Key="GroupsViewSource" Source="{Binding Groups}">
<CollectionViewSource.Filter>
<me:Filter>
<me:PropertyFilter PropertyName="GroupName"
Value="{Binding SearchGroupName, diag:PresentationTraceSources.TraceLevel=High}" />
</me:Filter>
</CollectionViewSource.Filter>
</CollectionViewSource>
然后我得到一个编译错误:未知属性 PresentationTraceSources.TraceLevel for System.Windows.Data.Binding......
我认为我与 RelativeSource 的绑定不起作用,因为我认为 CollectionViewSource 不是 Visual/Logical Tree 的成员。
因此,我认为我的 DataContext 可能为空。如果你们遇到同样的情况,你们更喜欢什么样的解决方案????
【问题讨论】:
标签: c# wpf xaml data-binding