c# - WPF 网格 IsEnabled 使用 ValueConverter

标签 c# wpf binding ivalueconverter isenabled

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

相关文章:

c# - 类似于 MS Paint 的 SaveFileDialog 的 OpenFileDialog 扩展

c# - WPF 转 jpg/gif/png/svg

c# - 将 IBindingList 转换为 DataTable

binding - EclipseLink MOXy : Bindings working with Unmarshaller but not with Binder

c# - 如何将数据绑定(bind)到密封类?

c# - ASP.NET Core API如何手动授权用户

c# - 将 C# 应用程序转换为 Android - 如何扩展 List<>

c# - XAML 中的预处理器条件编译

c# - 可以发布到自定义注册的协议(protocol)/方案吗?

c# - 在asp.net C#中动态捕获特定url的图像