2011-02-10 69 views
0

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

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

有什么我失踪了吗?

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

回答

5

那是因为你绑定的DataContext相同的值,你绑定IsEnabled。所以对于IsEnabled它实际上寻找MyVal.MyVal。替换为:

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

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

+0

DOH !!!!!!!!!!!!!!! – 2011-02-10 20:05:47