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发出属性更改通知
如果您不想污染视图模型,下一个最简单的选择是实现另一个值转换器。这就是我迄今为止解决该问题的方法。问题是,当枚举有许多值时,我需要在视图模型中添加许多布尔属性以及相应的更改通知。我想要一个更“干净”的解决方案。谢谢,我一直在找数据触发器。非常感谢。