こんにちは。「BasedOn」スタイルが正しく動作しないので、助けを求めています。状況は次のとおりです。
次のように、ResourceDictionary で基本スタイルを定義しています。
スタイル.xaml
<Style TargetType="{x:Type TreeView}" x:Key="MyBaseStyle">
<Style.Resources>
<HierarchicalDataTemplate ...>
...
</HierarchicalDataTemplate>
<DataTemplate ...>
...
</DataTemplate>
<Style TargetType="{x:Type TreeViewItem}">
...
</Style>
</Style.Resources>
<!-- This is for test purpose -->
<Setter Property="Background" Value="Red" />
この辞書を App.xaml に次のようにマージします。
App.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
これは私が以前に行ったことで、メインウィンドウで完全に機能しました:
MainWindow.xaml
<TreeView ... Style="{StaticResource MyBaseStyle}" />
しかし、私のアプリケーションには複数の TreeView があるため、それらに MyBaseStyle を適用し、TreeView ごとに異なる DataTrigger を追加する必要があります。私はこれを試しました:
MainWindow.xaml
<TreeView ...>
<TreeView.Style>
<Style TargetType="{x:Type TreeView}" BasedOn="{StaticResource MyBaseStyle}">
<Style.Triggers>
<!-- DataTrigger here -->
</Style.Triggers>
</Style>
</TreeView.Style>
</TreeView>
問題は、MyBaseStyle の HierarchicalDataTemplate が機能していないことです。MyBaseStyle の赤い背景が表示され、DataTrigger は正常に機能しますが、テンプレートは機能しません。プログラムが BasedOn スタイルの Style.Resources を無視しているようです??
スタイルスコープの問題である可能性があると思いますが、 TreeView ごとにコードを繰り返さなくても、どうすれば解決できますか? 誰かがすでにこの状況に陥っており、問題の原因を知っていますか?
助けてくれてありがとう、アルノー。