WPF DataTrigger for TextBlock 控制Text

WPF DataTrigger for TextBlock to control Text

我有文本块

<TextBlock>                  
    <Run Text="{Binding Path=Value1}" />
    <Run Text="-" />
    <Run Text="{Binding Path=Value2}" />
</TextBlock>

我需要添加这样的触发器:如果 Value2 = XXX,TextBlock 应该只显示 Value1。 如果没有转换器和 ViewModel 修改,这可能吗?

    <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>

是我找到的唯一方法。 运行 没有可见性 属性。

假设您不单独格式化每个 Run(即 FontSizeForeground),您可以使用 MultiBindingStringFormat 并更改TextValue2=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>