Wpf 条件不等于时触发

Wpf 条件不等于时触发,wpf,styles,Wpf,Styles,我需要一个WPF下的样式,当多个条件已满时,该样式将设置多个属性。但是,我的一个条件的类型为不等于。我应该如何更改下面的样式,使条件变为不等于?即使没有IValueConverter,它也能实现吗 <Style> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <!--<

我需要一个WPF下的
样式
,当多个条件已满时,该样式将设置多个属性。但是,我的一个条件的类型为
不等于
。我应该如何更改下面的
样式
,使条件变为
不等于
?即使没有
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; 
    }
}