1

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

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

有什么我想念的吗?

<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
}
4

1 回答 1

6

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

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

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

于 2011-02-10T19:54:53.880 回答