繁体   English   中英

WPF VS2022 无法检查 targettype 是否为 Visibility

[英]WPF VS2022 cant check if targetype is Visibility

我有一个IValueConverter将“null”转换为“Visible”:

public class InverseNullToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter,
        System.Globalization.CultureInfo culture)
    {
        if (targetType != typeof(System.Windows.Visibility))
            throw new InvalidOperationException("The target must be a Visibility");
        
        if (value == null)
            return Visibility.Visible;

        return Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter,
        System.Globalization.CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

这在Visual Studio 2019中运行良好,但是当我更新到2022时,我在使用此值转换器的每个地方都出现错误。 第一个 if-case 总是返回 true,不管输入是什么。

为什么“if (targetType.= typeof(System.Windows.Visibility))”在 VS 2022 中不起作用? 我应该改变什么才能让它工作?

我正在使用.Net Framework 4.7.2。

我收到的错误消息是XDG0066 ,除了我在抛出的“目标必须是可见性”中提供的文本外,它没有其他文本

我在哪里使用值转换器的示例:

<Rectangle x:Name="Back" Fill="{TemplateBinding Background}" Visibility="{TemplateBinding ImageBack, Converter={StaticResource InverseNullToVisibilityConverter}}"/>

这是 XAML 设计器中的一个问题,它似乎在目标类型不完全是Visibility的上下文中应用您的转换器。

将您的检查更改为更普遍适用的表达式,例如

if (!targetType.IsAssignableFrom(typeof(Visibility)))
{
    throw new InvalidOperationException("The target must be assignable from Visibility");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM