隐藏<;运行/>;TextBlock中的标记-WPF

隐藏<;运行/>;TextBlock中的标记-WPF,wpf,Wpf,我有两个Run标记和一个Linebreak标记的文本块: <TextBlock> <Run Text="TopText"/> <LineBreak/> <Run x:Name="bottomRun" Text="Bottom text"/> </TextBlock> 我想在代码隐藏中隐藏第二个Run标记。但是没有可见的属性。。。为什么会这样? 如何只隐藏一个Run标记的最佳解决方案是什么

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

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

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

Visibility
UIElement
类中的属性,所有UI控件都从该类派生,但
Run
不是从该类派生的

您最好将
文本
属性设置为
字符串。代码隐藏中为空

bottomRun.Text = String.Empty;

有时这是合适的,但如果您确实需要“运行”文本,并且希望在内联元素中有一个自动换行符,则这并不理想

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

您得到的文本块非常小。当遇到类似情况时,我复制了它并将Visiblity属性绑定到TextBlock上

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


转换器被适当地声明、定义并采用“invert”参数。

我知道OP想要使用一个包含运行的单个TextBlock来解决这个问题,但我用一个水平方向的TextBlock StackPanel解决了这个问题。这是一个较重的解决方案,因为涉及到更多控件,但可以工作。

您可以使用绑定进行用户风格的触发:

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


@tofutim它确实很时尚。但是您不能以样式覆盖直接在对象中设置的内容;您只需要在样式中设置值,然后在样式内的触发器中覆盖它。@ANeves-确定吗?因为如上所述,
Run
没有任何与之相关联的属性
Visibility
,那么如何从Style设置它呢?RohitVas,我没有写任何关于Visibility的内容。你误解了吗?如果不是,请重写您的评论好吗?值得指出的是,
必须是
的孩子。