0

ローカル クラス タイプに依存するトリガーをよく使用します。一般的なケースは、クラス依存の 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 のみでローカル型を取得することはできますか?

4

1 に答える 1