これを ResourceDictionary に入れ、アプリケーション レベルでスタイルを定義します。
<Style x:Key="TextBlockStyle" TargetType="TextBlock">
<Setter Property="Margin" Value="0,10,0,10"/>
</Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource TextBlockStyle}" />
(Extended WPF Toolkit から) xctk:PropertyGrid コントロール内にある特定の TextBlock のマージンを削除したいと考えています。上記の 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" />
問題の TextBlock を明らかに生成するのは、この ContentPresenter です。
ResourceDictionary のスタイルが適用され、マージンが変更されます。
しかし、内部の私のスタイルはそれを上書きしません。
どうすればいいですか?