我有一个带有 Grid 和 TreeView 的 WPF 窗口。网格的数据上下文绑定(bind)到 TreeView 上的选定项。但是,因为并非所有 treeviewitem 都适用,所以如果 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
}
最佳答案
那是因为您将 DataContext 绑定(bind)到与绑定(bind) IsEnabled
相同的值。所以对于 IsEnabled
它实际上是在寻找 MyVal.MyVal。替换为:
IsEnabled="{Binding Converter={StaticResource NullCheckConverter}}"
此外,如果您遇到绑定(bind)问题,请在 Debug模式输出窗口中检查绑定(bind)错误。
关于c# - WPF 网格 IsEnabled 使用 ValueConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4961875/