我在 ResourceDictionary 中有这个,在应用程序级别定义了一种样式:
<Style x:Key="TextBlockStyle" TargetType="TextBlock">
<Setter Property="Margin" Value="0,10,0,10"/>
</Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource TextBlockStyle}" />
我想删除特定 TextBlock 的边距,它位于 xctk:PropertyGrid 控件(来自扩展的 WPF 工具包)中。如果我只是更改上面 ResourceDictionary 样式中的数字,它就可以工作。
现在我试图在特定窗口 XAML 中覆盖 PropertyGrid 的样式,而不是全局样式。
<xctk:PropertyGrid>
<xctk:PropertyGrid.Resources>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="0,0,0,0"/>
</Style>
</xctk:PropertyGrid.Resources>
</xctk:PropertyGrid>
不幸的是,这不起作用,PropertyGrid 中的TextBlock 没有改变,保持全局样式。
更新:
xtck:PropertyGrid 里面有一个 xctk:WatermarkTextBox。WatermarkTextBox 里面有这个:
<ContentPresenter x:Name="PART_WatermarkHost" Content="{TemplateBinding Watermark}"
ContentTemplate="{TemplateBinding WatermarkTemplate}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
isHitTestVisible="False"
Margin="{TemplateBinding Padding}"
Visibility="Collapsed" />
正是这个 ContentPresenter 显然产生了有问题的 TextBlock。
ResourceDictionary 中的样式被应用到它,改变了边距。
但我内心的风格并没有覆盖它。
我该怎么做?