繁体   English   中英

将BooleanToVisibilityConverter绑定到视图模型中的枚举

[英]Binding BooleanToVisibilityConverter to an enum in a View Model

我是一个视图模型,我有:

   public enum EventViewMode
   {
       View,
       Update,
       Insert
   }

然后,在视图中某些控件必须可见或不符合EventViewMode的值。

对于布尔值,我使用了BooleanToVisibilityConverter转换器。

有没有一种方法可以在绑定系统中使用表达式将枚举值转换为布尔表达式。

我的意思是,类似:

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

请注意, MyVariable == EventViewMode.View不起作用,它用于显示我想要的内容。

不,我不害怕。 您的选择是

  • 使用值转换器
  • 将属性公开为可见性,而不是EventViewMode
  • 例如,使用数据触发器基于Enum值设置所需的属性(在这种情况下为可见性)

     <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的属性更改通知。

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

暂无
暂无

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

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