Search code examples
c#wpfxamltriggersmultidatatrigger

Compare multi-trigger's binding with value


<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition>
            <Condition.Binding>
                <MultiBinding Converter="{StaticResource BooleanOr}">
                    <Binding Path="Property Value =5"/>
                    <Binding Path="Property Value =10"/>
                </MultiBinding>
            </Condition.Binding>
        </Condition>
    </MultiDataTrigger.Conditions>

///Do something here based on condition....

The code means when Value eqauls 5 or 20 ===> Do something.

I followed this one for multi-triggers

But "Binding Path="Property Value =5"" this line obviously is wrong.

What should I write here in order to compare Value is 5 or not Thank you!


Solution

  • You'll need another converter to see if one value is equal to whatever value you're comparing against

    <MultiBinding Converter="{StaticResource BooleanOr}">
        <Binding Path="Value" ConverterParameter="5" Converter="{StaticResource IsValueEqualParameterConverter}" />
        <Binding Path="Value" ConverterParameter="10" Converter="{StaticResource IsValueEqualParameterConverter}" />
    </MultiBinding>
    

    Another option is to use DataTriggers

    <Style>
        <Setter Property="SomeProperty" Value="FalseValue" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding Value}" Value="5">
                <Setter Property="SomeProperty" Value="TrueValue" />
            </DataTrigger>
            <DataTrigger Binding="{Binding Value}" Value="10">
                <Setter Property="SomeProperty" Value="TrueValue" />
            </DataTrigger>
        </Style.Triggers>
    </Style>