【问题标题】:WPF Multiple Enum Flags to Converter Parameter?WPF多个枚举标志到转换器参数?
【发布时间】:2015-05-16 01:38:25
【问题描述】:

如果枚举值为 (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}吗?

【问题讨论】:

    标签: c# wpf enums flags valueconverter


    【解决方案1】:

    我找到了答案here

    为每个人节省一次旅行

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

    【讨论】:

      【解决方案2】:

      正如here 所述,语法应该是

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

      因为逗号分隔 XML,并且参数将始终是一个单独的枚举值。虽然没有智能感知

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-12
        • 1970-01-01
        • 2015-09-09
        • 2013-09-22
        相关资源
        最近更新 更多