Reputation: 4581
I know RelativeSource Self
binds to the DataContext
in scope. That is not what I want. I have a TextBlock
and I want to set a trigger which will multibind 2 things. A value from my DataContext/ViewModel
which is easy and I have done that. The 2nd value I want is the Text property of the TextBlock
. I can't seem to get the syntax at all.
I have this trigger in a TextBlock style.
<Style TargetType="TextBlock"}">
<Setter Property="Margin" Value="10"></Setter>
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource CustomMultiValueConverter}">
<Binding Path="SelectedCategory"></Binding>
<Binding Path="Text" RelativeSource="{RelativeSource Self}"></Binding>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Foreground" Value="Blue"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
Upvotes: 0
Views: 2616
Reputation: 69985
You should be able to use a RelativeSource.AncestorType
Binding
to reach the TextBlock.Text
value. Try this:
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="10"></Setter>
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource CustomMultiValueConverter}">
<Binding Path="SelectedCategory"></Binding>
<Binding Path="Text" RelativeSource="{Binding RelativeSource
AncestorType={x:Type TextBlock}}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Foreground" Value="Blue"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
Upvotes: 1