不是值的时候可以设置数据触发吗?
Is it possible to set a data trigger when it is not a value?
我有一个复选框,当值是除 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
是一个枚举值。
您可以使用 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>
当然你必须将转换器声明为资源。
因为当它应该可见时您只有一个值,您可以简单地反转您的条件。默认情况下将 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>
我有一个复选框,当值是除 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
是一个枚举值。
您可以使用 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>
当然你必须将转换器声明为资源。
因为当它应该可见时您只有一个值,您可以简单地反转您的条件。默认情况下将 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>