C# 使用ValueConverter启用WPF网格

C# 使用ValueConverter启用WPF网格,c#,wpf,binding,ivalueconverter,isenabled,C#,Wpf,Binding,Ivalueconverter,Isenabled,我有一个带网格和树状视图的WPF窗口。网格的datacontext绑定到树视图上的选定项。但是,由于并非所有的TreeViewItem都适用,如果TreeViewItem不适用,我想禁用网格。因此,我创建了一个值转换器来执行空检查并返回bool。(在这种情况下,适用项目不为空) 问题是从未使用过值转换器。我设置了断点,但它们从未被击中。我有其他的值转换器,我正在使用,他们都工作得很好 有什么我遗漏的吗 <Grid Grid.Column="1" Grid.Row="0" DataConte

我有一个带网格和树状视图的WPF窗口。网格的datacontext绑定到树视图上的选定项。但是,由于并非所有的TreeViewItem都适用,如果TreeViewItem不适用,我想禁用网格。因此,我创建了一个值转换器来执行空检查并返回bool。(在这种情况下,适用项目不为空)

问题是从未使用过值转换器。我设置了断点,但它们从未被击中。我有其他的值转换器,我正在使用,他们都工作得很好

有什么我遗漏的吗

<Grid Grid.Column="1" Grid.Row="0" DataContext="{Binding MyVal}" IsEnabled="{Binding MyVal, Converter={StaticResource NullCheckConverter}}" Margin="2,2,2,2">

这是因为您将DataContext绑定到与绑定
IsEnabled
相同的值。因此,对于
IsEnabled
它实际上是在寻找MyVal.MyVal。替换为:

IsEnabled="{Binding Converter={StaticResource NullCheckConverter}}" 

此外,如果绑定有问题,请在“调试模式输出”窗口中检查绑定错误。

这是因为您将DataContext绑定到与绑定相同的值
IsEnabled
。因此,对于
IsEnabled
它实际上是在寻找MyVal.MyVal。替换为:

IsEnabled="{Binding Converter={StaticResource NullCheckConverter}}" 
此外,如果绑定有问题,请在调试模式输出窗口中检查绑定错误