如何让HandyControl窗口的TextBlock使用WPF默认样式?[已部分解决]
让HandyControl窗口内的TextBlock使用WPF默认样式的方法
要让hc:Window里的TextBlock跳过HandyControl的全局样式,恢复WPF默认样式,有两种简单可行的方式:
方法1:单个TextBlock直接指定空样式
直接给目标TextBlock的Style属性设为{x:Null},这样它就不会继承HandyControl的全局样式,自动使用WPF原生默认样式:
<hc:Window x:Class="TextTrimming_Test.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:TextTrimming_Test" xmlns:hc="https://handyorg.github.io/handycontrol" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800" Background="#181818"> <!-- 给TextBlock设置空样式,恢复默认 --> <TextBlock Text="I want to be the default WPF TextBlock !" Style="{x:Null}"/> </hc:Window>
方法2:批量设置默认样式(适用于多个TextBlock)
如果窗口里有多个TextBlock都需要用默认样式,可以在窗口的Resources里定义一个全局样式,让所有TextBlock自动应用空样式:
<hc:Window x:Class="TextTrimming_Test.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:TextTrimming_Test" xmlns:hc="https://handyorg.github.io/handycontrol" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800" Background="#181818"> <hc:Window.Resources> <!-- 定义全局TextBlock样式,覆盖HandyControl的样式 --> <Style TargetType="TextBlock" BasedOn="{x:Null}"/> </hc:Window.Resources> <StackPanel> <TextBlock Text="第一个默认样式的TextBlock"/> <TextBlock Text="第二个默认样式的TextBlock"/> </StackPanel> </hc:Window>
原理说明:HandyControl通过全局样式资源给TextBlock设置了自定义样式,将Style设为{x:Null}或者基于空的样式,会让控件忽略继承的自定义样式,回到WPF原生的默认渲染逻辑。
内容的提问来源于stack exchange,提问作者FrenchMan68
相关产品推荐
相关产品推荐

