Мне нужно написать часть текста внутри кнопки с другим передним планом. До сих пор, следуя этому решению , я использовал следующий фрагмент кода:
<Button>
<TextBlock Margin="20"
FontSize="24"
FontStyle="Normal"
FontWeight="Medium"
Foreground="#FF1384F5">
<Run>text1</Run>
<Run Foreground="#FF1372D3" Text="{Binding MyBinding}"/>
<Run >text2</Run>
</TextBlock>
</Button>
Теперь мне нужно изменить весь текст на основе триггера, поэтому я построил DataTriger, как показано ниже:
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding MyBoolean}" Value="True">
<Setter Property="Text">
<Setter.Value>
<Run>text1</Run>
<Run Foreground="#FF1372D3" Text="{Binding MyBinding}"/>
<Run >text2</Run>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding MyBoolean}" Value="False">
<Setter Property="Text" Value="text3" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
конечно, это не работает, потому что значение свойства устанавливается более одного раза. В поисках решения я нашел это . Это в основном говорит, чтобы использовать мульти привязки
<Setter.Value>
<MultiBinding StringFormat="{}{0}{1}{2}"><!-- Format as you wish -->
<Binding Path="SelectedItem.iso"/>
<Binding Source="{x:Static System:Environment.NewLine}"/>
<Binding Path="SelectedItem.value"/>
</MultiBinding>
</Setter.Value>
Но я не уверен, подходит ли он моей ситуации и как его использовать в конечном итоге.