[英]WPF DataTrigger for TextBlock to control Text
I have TextBlock 我有TextBlock
<TextBlock>
<Run Text="{Binding Path=Value1}" />
<Run Text="-" />
<Run Text="{Binding Path=Value2}" />
</TextBlock>
I need to add such trigger: If Value2 = XXX, TextBlock should display only Value1. 我需要添加这样的触发器:如果Value2 = XXX,则TextBlock应该仅显示Value1。 Is that possible to do without converters and ViewModel modifications?
没有转换器和ViewModel修改就可以做到吗?
Assuming that you don't format each Run
individually (ie FontSize
, Foreground
) instead you can use MultiBinding
with StringFormat
and change Text
binding when Value2=XXX
假设您不设置每个
Run
单独格式(即FontSize
, Foreground
),则可以将MultiBinding
与StringFormat
一起使用,并在Value2=XXX
时更改Text
绑定
<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>
<TextBlock>
<Run Text="{Binding Path=prop1}" />
<Run Text="-" />
<TextBlock>
<TextBlock.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=prop2}" Value="XXX">
<Setter Property="TextBlock.Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
<Run Text="{Binding Path=prop2}" />
</TextBlock>
</TextBlock>
is the only way i found. 是我发现的唯一方法。 A run has no visibility property.
运行没有可见性属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.