C# 将BooleantVisibilityConverter绑定到视图模型中的枚举

C# 将BooleantVisibilityConverter绑定到视图模型中的枚举,c#,xaml,windows-8,C#,Xaml,Windows 8,如果是视图模型,我有: public enum EventViewMode { View, Update, Insert } 然后,在视图中,某些控件必须可见或不符合EventViewMode的值 对于布尔值,我使用了BooleanToVisibilityConverterconverter 是否有方法在绑定系统中使用表达式将枚举值转换为布尔表达式 我是说,比如: <Button x:Name="btnSave" Vi

如果是视图模型,我有:

   public enum EventViewMode
   {
       View,
       Update,
       Insert
   }
然后,在视图中,某些控件必须可见或不符合
EventViewMode
的值

对于布尔值,我使用了
BooleanToVisibilityConverter
converter

是否有方法在绑定系统中使用表达式将枚举值转换为布尔表达式

我是说,比如:

<Button x:Name="btnSave"  
   Visibility="{Binding MyVariable == EventViewMode.View ,  Converter={StaticResource booleanToVisibilityConverter}}" />


请注意,
MyVariable==EventViewMode.View
不起作用,它是用来显示我想要达到的目的。

不,恐怕没有。你的选择是

  • 使用
  • 将属性公开为而不是
    EventViewMode
  • 例如,使用数据触发器根据枚举值设置所需的属性(在本例中为可见性)

    <Button x:Name="btnSave" Visibility="{Binding MyVariable == EventViewMode.View ,  Converter={StaticResource booleanToVisibilityConverter}}">
        <Button.Style>
            <Style TargetType={x:Type Button}>
                <Setter Property="Visibility" Value="Collapsed" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding MyVariable}" Value="View">
                        <Setter Property="Visibility" Value="Visible" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>
    
    
    

您只需在视图模型中公开一个属性即可:

public bool IsVisible { get { return MyVariable == EventViewMode.View; } }
更改MyVariable时,不要忘记为IsVisible发出属性更改通知


如果您不想污染视图模型,下一个最简单的选择是实现另一个值转换器。

这就是我迄今为止解决该问题的方法。问题是,当枚举有许多值时,我需要在视图模型中添加许多布尔属性以及相应的更改通知。我想要一个更“干净”的解决方案。谢谢,我一直在找数据触发器。非常感谢。