ローカル クラス タイプに依存するトリガーをよく使用します。一般的なケースは、クラス依存の ContentControls を持つ一般的なコントロール スタイルです。シナリオ:
1) リストボックス 'MyUserControl' を実装する UserControl
2) Usercontrol 内の Listbox コントロールに適用される大きなリストボックス スタイル。スタイルには、最初は空の ContentControl があります (Label / StackPanel で満たされています)。
<ContentControl Name="SpecificLabel"></ContentControl>
3) 特定の派生クラスごとに定義されたコンテンツ コントロールがあります。
<ControlTemplate x:Key="listbox1Template">
<Label...
</ControlTemplate>
<ControlTemplate x:Key="listbox2Template">
<StackPanel...
</ControlTemplate>
4) MyListboxControl の派生クラスに応じて、コンテンツ コントロールのテンプレートが Datatriggers によって選択されます。
<DataTrigger Binding="{Binding ElementName=MyUserControl, Path=DataType}" Value="{x:Type local:MyListbox1}">
<Setter TargetName="SpecificLabel" Property="Template" Value="{StaticResource listbox1template}"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=MyUserControl, Path=DataType}" Value="{x:Type local:MyListbox2}">
<Setter TargetName="SpecificLabel" Property="Template" Value="{StaticResource listbox2template}"/>
</DataTrigger>
したがって、基本クラスは DataType プロパティを提供します。
public Type DataType
{
get
{
return this.GetType();
}
}
これは、もっと簡単な方法があるに違いないようです。このプロパティを使用せずに、XAML のみでローカル型を取得することはできますか?