ビジュアル ツリー内のスタイル オーバーライドがどのように機能するかを理解しようとして、少し混乱しています。
2 つの例があります。最初の定義DataGridCell
は、示されているように完全に機能します。
2 番目の の定義ToggleButton
は完全に無視されますが、最初の定義は機能するのに、2 番目の定義は機能しない理由を突き止めるのに苦労しています。誰でも洞察を提供できますか?
ワーキング -DataGridCell
で定義されたスタイルDataGrid.Resources
:
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding hello}">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}"><!--DataGridCell is a child of DataGrid's Visual Tree -->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border Padding="10" Background="Red">
<ContentPresenter Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.Resources>
非稼働 -ToggleButton
で定義されたスタイルResources
は無視されます:
<Expander>
<Expander.Resources>
<Style TargetType="{x:Type ToggleButton}"><!--ToggleButton is a child of Expander's Visual Tree-->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock>Hello World!</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Expander.Resources>
<Expander.Header>Header</Expander.Header>
<Expander.Content>Body</Expander.Content>
</Expander>