Using bindings in DataTrigger condition Using bindings in DataTrigger condition wpf wpf

Using bindings in DataTrigger condition


You can't use a binding on the Value property, but you can get around this by using a MultiBinding and an IMultiValueConverter. I would define my Trigger in a Style in e.g. the Window.Resources, which would give something like this:

<Window.Resources>    <local:SomeMultiConverter x:Key="someMultiConverter" />    <Style x:Key="someStyle" TargetType="StackPanel">        <Setter Property="StackPanel.Background" Value="Red" />        <Style.Triggers>            <DataTrigger Value="True">                <DataTrigger.Binding>                    <MultiBinding Converter="{StaticResource someMultiConverter}">                        <Binding Path="Id"></Binding>                        <Binding ElementName="Foo" Path="DataContext.ActiveId"></Binding>                    </MultiBinding>                </DataTrigger.Binding>                <Setter Property="StackPanel.Background" Value="Green" />            </DataTrigger>        </Style.Triggers>    </Style> </Window.Resources><Grid x:Name="Foo">    <StackPanel DataContext="{Binding CurrentPerson}" Style="{StaticResource someStyle}" >        <TextBlock Text="{Binding Id}" />        <TextBlock Text="{Binding Name}" />    </StackPanel></Grid>

See this link for an example on MultiBinding and IMultiValueConverter. They're fairly easy to write.