我有一个带有Grid和TreeView的WPF窗口。 Grid的datacontext绑定到树视图上的选定项。但是,因为并非所有treeviewitems都适用,所以如果treviewitem不适用,我想禁用网格。所以,我创建了一个值转换器来进行空检查并返回一个bool。 (在这种情况下,适用的项目不会为空)
问题是从未使用过值转换器。我设定了破发点,他们从未被击中过。我有其他正在使用的价值转换器,它们都可以正常工作。
我有什么遗失的吗?
<Grid Grid.Column="1" Grid.Row="0" DataContext="{Binding MyVal}" IsEnabled="{Binding MyVal, Converter={StaticResource NullCheckConverter}}" Margin="2,2,2,2">
这个问题并不重要,但这里是ValueConverter代码:
internal class NullCheckValueConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return !(value == null);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
答案 0 :(得分:5)
这是因为您将DataContext绑定到与绑定IsEnabled
相同的值。所以IsEnabled
实际上它正在寻找MyVal.MyVal。替换为:
IsEnabled="{Binding Converter={StaticResource NullCheckConverter}}"
如果您遇到绑定问题,请进一步检查调试模式输出窗口是否存在绑定错误。