Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF多个枚举标志到转换器参数?_C#_Wpf_Enums_Flags_Valueconverter - Fatal编程技术网

C# WPF多个枚举标志到转换器参数?

C# WPF多个枚举标志到转换器参数?,c#,wpf,enums,flags,valueconverter,C#,Wpf,Enums,Flags,Valueconverter,如果枚举值为(a | B | C),我需要一个可见的控件 我知道如何使用转换器将控件的可见性绑定到单个枚举(a) 我该如何处理这个案子呢?参数中会包含什么 这是我使用的转换器: public class EnumToVisibilityConverter : IValueConverter { public object Convert( object value, Type targetType, object parameter, System.Globalization.Cultu

如果枚举值为(a | B | C),我需要一个可见的控件

我知道如何使用转换器将控件的可见性绑定到单个枚举(a)

我该如何处理这个案子呢?参数中会包含什么

这是我使用的转换器:

public class EnumToVisibilityConverter : IValueConverter {
    public object Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture ) {
        if ( value == null || parameter == null || !( value is Enum ) )
            return Visibility.Hidden;
        string State = value.ToString( );
        string parameterString = parameter.ToString( );

        foreach ( string state in parameterString.Split( ',' ) ) {
            if ( State.Equals( state ) )
                return Visibility.Visible;
        }
        return Visibility.Hidden;
    }

    public object ConvertBack( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture ) {
        throw new NotImplementedException( );
    }
}
这是XAML绑定:

<UserControl.Visibility>
    <Binding
        Path="GameMode" Source="{x:Static S:Settings.Default}" Converter="{StaticResource ETVC}"
        ConverterParameter="{x:Static E:GameMode.AudiencePoll}" Mode="OneWay"/>
</UserControl.Visibility>


如何将(A | B | C)传递给转换器参数?它是否简单到只说
{x:Static E:Enum.A | E:Enum.B | E:Enum.C}

我找到了答案

为每个人节省一次旅行

<Binding Path="PathGoesHere" Source="{x:Static SourceGoesHere}" Converter="{StaticResource ConverterKeyGoesHere}">
    <Binding.ConverterParameter>
        <EnumTypeGoesHere>A,B,C</EnumTypeGoesHere>
    </Binding.ConverterParameter>
</Binding>

A、 B,C
如所述,语法应为

<Binding Path="PathGoesHere" Source="{x:Static SourceGoesHere}" Converter="{StaticResource ConverterKeyGoesHere}">
    <Binding.ConverterParameter>
        A|B|C
    </Binding.ConverterParameter>
</Binding>

A | B | C
由于逗号分隔XML,因此参数始终是一个枚举值。但是没有智能感知