0

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

   public enum EventViewMode
   {
       View,
       Update,
       Insert
   }

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

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

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

我的意思是,类似:

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

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

4

2 回答 2

0

不,我害怕。你的选择是

  • 使用价值转换器
  • 将属性公开为可见性而不是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>
    
于 2013-02-12T17:29:25.473 回答
0

您可以简单地在视图模型中公开一个属性:

public bool IsVisible { get { return MyVariable == EventViewMode.View; } }

当您更改 MyVariable 时,不要忘记为 IsVisible 引发属性更改通知。

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

于 2013-02-12T17:52:31.067 回答