隐藏TextBlock中的<run>标签 - WPF </run>

时间:2013-08-11 11:45:30

标签: wpf

我的文本块包含2个Run标记和一个Linebreak

  <TextBlock>
      <Run Text="TopText"/>
      <LineBreak/>
      <Run x:Name="bottomRun" Text="Bottom text"/>
  </TextBlock>

我想隐藏代码中的第二个Run标记。但是没有Visible属性......为什么会这样? 如何仅隐藏一个Run标记的最佳解决方案是什么?

5 个答案:

答案 0 :(得分:9)

VisibilityUIElement类中的属性,所有UI控件都是从该属性派生的,但Run并非来自它。

您可以做的最好的事情是在后面的代码中将Text属性设置为String.Empty

bottomRun.Text = String.Empty;

答案 1 :(得分:4)

你得到的TextBlock非常小。当遇到类似情况时,我复制它并绑定TextBlock上的Visiblity属性。

if (x > 0) {
    System.out.println("positive ");
} else if (x == 0) {
    System.out.println("zero ");
} else {
    System.out.println("negative");
}

转换器适当声明,定义并采用“反转”参数。

答案 2 :(得分:1)

有时这是合适的 - 但如果你真的需要文字来运行,那就不理想了。并且您希望在内联元素中具有自动换行符。

<TextBlock>
    <InlineUIElement><TextBlock Visibility="Collapsed" Text="TopText"/></InlineUIElement>
    <LineBreak/>
    <Run x:Name="bottomRun" Text="Bottom text"/>
</TextBlock>

答案 3 :(得分:1)

我知道OP希望使用带有运行的单个TextBlock来解决这个问题,但我解决了TextBlocks的水平方向StackPanel的问题。这是一个更重的解决方案,因为涉及更多控件,但有效。

答案 4 :(得分:1)

您可以使用带有绑定的样式触发器:

<Run>
    <Run.Style>
        <Style TargetType="Run">
            <Setter Property="Text" Value="Bottom text"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=variable}" Value="{x:Null}">
                    <Setter Property="Text" Value=""/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Run.Style>
</Run>