我有TextBlock
<TextBlock>
<Run Text="{Binding Path=Value1}" />
<Run Text="-" />
<Run Text="{Binding Path=Value2}" />
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
我需要添加这样的触发器:如果Value2 = XXX,TextBlock应该只显示Value1.没有转换器和ViewModel修改可以做到吗?
假设你不格式化每个Run单独(即FontSize,Foreground),而不是您可以使用MultiBinding与StringFormat和更改Text时绑定Value2=XXX
<TextBlock>
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Text">
<Setter.Value>
<MultiBinding StringFormat="{}{0} - {1}">
<Binding Path="Value1"/>
<Binding Path="Value2"/>
</MultiBinding>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Value2}" Value="XXX">
<Setter Property="Text" Value="{Binding Value1}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)