我有两个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
Visibility是UIElement类中的属性,所有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)
适当地声明,定义了转换器,并采用了“反转”参数。
您可以使用带有 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)