隐藏TextBlock中的<Run />标记 - WPF

Ala*_*bra 10 wpf

我有两个Run标签的文本块和一个Linebreak:

  <TextBlock>
      <Run Text="TopText"/>
      <LineBreak/>
      <Run x:Name="bottomRun" Text="Bottom text"/>
  </TextBlock>
Run Code Online (Sandbox Code Playgroud)

我想Run在代码中隐藏第二个标签.但是没有Visible财产......为什么会这样?如何只隐藏一个Run标签的最佳解决方案是什么?

Roh*_*ats 10

VisibilityUIElement类中的属性,所有UI控件都派生自该属性,但Run不是从中派生出来的.

你可以做的最好是在后面的代码中设置Text属性String.Empty:

bottomRun.Text = String.Empty;
Run Code Online (Sandbox Code Playgroud)


小智 6

您拥有的TextBlock很小。遇到类似情况时,我将其复制并在TextBlock上绑定Visiblity属性。

<TextBlock Visibility="{Binding Path=LicenseValid, Converter={StaticResource BooleanToVisibilityConverter}, ConverterParameter=false }">
      <Run Text="TopText"/>
      <LineBreak/>
      <Run x:Name="bottomRun" Text="Bottom text"/>
  </TextBlock>

<TextBlock Visibility="{Binding Path=LicenseValid, Converter={StaticResource BooleanToVisibilityConverter}, ConverterParameter=false }">
      <Run Text="TopText"/>
      <LineBreak/>
      <Run x:Name="bottomRun" Text="Bottom text"/>
  </TextBlock>
Run Code Online (Sandbox Code Playgroud)

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


A. *_*rel 6

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

<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>
Run Code Online (Sandbox Code Playgroud)