测试转换器参数是否为 System.Windows.Visibility 类型

问题描述 投票:0回答:2

我需要检查转换器参数是否属于 System.Windows.Visibility 类型:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    //....
    if (parameter is Visibility)
    {
        Console.WriteLine("parameter is Visibility");
    }
    if (parameter is Enum)
    {
        Console.WriteLine("parameter is Enum");
    }
    if (parameter.GetType().IsEnum)
    {
        Console.WriteLine("parameter.GetType().IsEnum");
    }
    //.......
}

三个 if 条件都不评估为 true,在其他 SO 问题中推荐的第二个和第三个测试方法。调试器指示参数为

System.Windows.Visibility.Collapsed
,所以没有问题。 我忽略了哪个可能显而易见的事实?

c# enums
2个回答
1
投票

默认情况下,输入 ConverterParameter 的文本被视为字符串,除非使用

StaticResource

引入对象实例

0
投票

如果您在 XAML 中将参数提供为

{x:Static Visibility.Collapsed}
,则第一个
if
条件的计算结果为
true
:

<button
    Visibility="{Binding Path=IsCompany,
                         Converter={cnv:VisibilityConverter},
                         ConverterParameter={x:Static Visibility.Collapsed},
                         FallbackValue={x:Static Visibility.Collapsed}}"
/>
© www.soinside.com 2019 - 2024. All rights reserved.