Wpf 条件不等于时触发
我需要一个WPF下的Wpf 条件不等于时触发,wpf,styles,Wpf,Styles,我需要一个WPF下的样式,当多个条件已满时,该样式将设置多个属性。但是,我的一个条件的类型为不等于。我应该如何更改下面的样式,使条件变为不等于?即使没有IValueConverter,它也能实现吗 <Style> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <!--<
样式
,当多个条件已满时,该样式将设置多个属性。但是,我的一个条件的类型为不等于
。我应该如何更改下面的样式
,使条件变为不等于
?即使没有IValueConverter
,它也能实现吗
<Style>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!--<Condition 1 here.../>-->
<!--<Condition 2 here.../>-->
<Condition Binding="{Binding Path=id}" Value="3"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Red"/>
<Setter Property="Foreground" Value="Black"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
您需要一个
IValueConverter
和一些额外的标记:
<Style>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!--<Condition 1 here.../>-->
<!--<Condition 2 here.../>-->
<Condition>
<Condition.Binding>
<Binding Path="id" Converter="{StaticResource ValueToEqualsParameterConverter}">
<Binding.ConverterParameter>
<System:Int32>3</System:Int32>
</Binding.ConverterParameter>
</Binding>
</Condition.Binding>
<Condition.Value>
<System:Boolean>False</System:Boolean>
</Condition.Value>
</Condition>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Red" />
<Setter Property="Foreground" Value="Black" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
另一个选项是在样式中将默认值定义为setter,然后实现数据触发器。在以下代码中,背景值始终为红色,值为3时除外
即使没有IValueConverter也能实现吗?。。。不,它不能。注意,对于枚举参数和其他类型,它将不起作用。使用
返回等于(值、参数)改为在转换器中编写>代码
<Style>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<!--<Condition 1 here.../>-->
<!--<Condition 2 here.../>-->
<Condition>
<Condition.Binding>
<Binding Path="id" Converter="{StaticResource ValueToEqualsParameterConverter}">
<Binding.ConverterParameter>
<System:Int32>3</System:Int32>
</Binding.ConverterParameter>
</Binding>
</Condition.Binding>
<Condition.Value>
<System:Boolean>False</System:Boolean>
</Condition.Value>
</Condition>
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Red" />
<Setter Property="Foreground" Value="Black" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
public class ValueToEqualsParameterConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
return value == parameter;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
return null;
}
}