我有一个复选框,当值为除1之外的任何值时,我想要折叠。
所以我想做点什么:
<CheckBox.Style>
<Style TargetType="CheckBox">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ucPrincipal, Path=DataContext.MyProperyViewMode}" Value<>"MyValue">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
当然,数据触发器中的值不能使用<>
比较器,但这就是想法。 MyPropertyViewModel
是枚举值。
答案 0 :(得分:2)
您可以使用IValueConverter
。假设您的实现名为YourConverter
。
这是Convert
方法:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
YourEnum enumValue = (YourEnum)value;
return enumValue == YourEnum.WrongValue;
}
所以你的DataTrigger将是:
<CheckBox.Style>
<Style TargetType="CheckBox">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ucPrincipal, Path=DataContext.MyProperyViewMode, Converter={StaticResource YourConverter}}" Value="True">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
当然,您必须将转换器声明为资源。
答案 1 :(得分:2)
由于只有一个值可见,您可以简单地反转您的情况。默认情况下,将Visibility
设置为Collapsed
,并且只有当该值触发时才Visible
<CheckBox.Style>
<Style TargetType="CheckBox">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ucPrincipal, Path=DataContext.MyProperyViewMode}" Value="MyValue">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>