使用ValueConverter的WPF网格IsEnabled

时间:2011-02-10 19:50:10

标签: c# wpf binding ivalueconverter isenabled

我有一个带有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
}

1 个答案:

答案 0 :(得分:5)

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

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

如果您遇到绑定问题,请进一步检查调试模式输出窗口是否存在绑定错误。