重複の可能性:
データテンプレートの継承
サブクラスではなく、インターフェイスを共有していないデータ型がいくつかありますが、XAML DataTemplate に表示したい共通のプロパティがあります。そうは言っても、私はこれが可能であることを知っています...
<!-- Basic Style Inheritance -->
<Style x:Key="FooStyle" TargetType="Foo" />
<Style x:Key="EnhancedFooStyle" TargetType="Foo" BasedOn="{StaticResource FooStyle}" />
<!-- Inheritance By Type -->
<Style x:Key="BaseItemStyle">
<Setter Property="Control.Background" Value="Yellow" />
</Style>
<!-- These three data types share the same 'BaseItemStyle' -->
<Style TargetType="ListBoxItem" BasedOn="{StaticResource BaseItemStyle}" />
<Style TargetType="ComboBoxItem" BasedOn="{StaticResource BaseItemStyle}" />
<Style TargetType="TreeViewItem" BasedOn="{StaticResource BaseItemStyle}" />
BasedOn
しかし、プロパティを持たないデータ テンプレートに対して、これと同様のことを行うことはできますか?
<DataTemplate x:Key="CommonTemplate">
<!-- Common Stuff Goes Here -->
</DataTemplate>
<!-- These three datatypes share the same DataTemplate -->
<DataTemplate DataType="Foo1" BasedOn="{StaticResource CommonTemplate}" />
<DataTemplate DataType="Foo2" BasedOn="{StaticResource CommonTemplate}" />
<DataTemplate DataType="Foo3" BasedOn="{StaticResource CommonTemplate}" />
BasedOn
このシナリオでは「ベース」ではなく「である」ため、ここで必要なものではないことはわかっていますが、純粋に XAML でそれを行う方法がわかりません。これを書いているとき、私はアイデアを持っていますが、使用するのUserControl
はごまかしている気がします...
<UserControl x:Key="CommonTemplate" x:Shared="False">
<!-- Common Stuff Goes Here -->
</UserControl>
<!-- These three datatypes share the same DataTemplate -->
<DataTemplate DataType="Foo1" BasedOn="{StaticResource CommonTemplate}">
<StaticResource ResourceKey="CommonTemplate" />
</DataTemplate>
<DataTemplate DataType="Foo2" BasedOn="{StaticResource CommonTemplate}" />
<StaticResource ResourceKey="CommonTemplate" />
</DataTemplate>
<DataTemplate DataType="Foo3" BasedOn="{StaticResource CommonTemplate}" />
<StaticResource ResourceKey="CommonTemplate" />
</DataTemplate>
ありがとう!