2013-02-12 30 views
0

我视图模型,我有:绑定BooleanToVisibilityConverter来枚举在视图模型

public enum EventViewMode 
    { 
     View, 
     Update, 
     Insert 
    } 

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

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

是否有使用表达式的约束制度,以枚举值转换为布尔表达式的方法。

我的意思是,是这样的:

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

注意MyVariable == EventViewMode.View不起作用,它是用于显示我想达到什么。

回答

0

不存在我不害怕。你的选择是

  • 使用value converter
  • 揭露属性作为visbility,而不是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> 
    
+0

DataTrigger就是我一直在寻找。谢谢。 – 2013-02-13 08:48:08

0

你可以简单地在您的视图模型公开属性:

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

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

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

+0

直到现在我才解决它。问题是,当枚举有很多的价值观,我需要在视图模型添加许多布尔性质以及相应的chanhged通知。我想要一个更“干净”的解决方案。谢谢。 – 2013-02-13 08:43:25