Ich habe einen Style für ein Window erstellt, so weit, so gut:
<Style x:Key="windowStyle"
TargetType="{x:Type Window}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Border Width="300" Height="300" BorderBrush="Red" BorderThickness="3">
<ContentPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Nun will ich ein spezialisiertes Window für bestimmte Anwendungszwecke, dazu vererbe ich von Window mit einem neuen DependencyProperty und erstelle dazu einen neuen Style. Im Prinzip will ich die Struktur vom Template im Base-Style behalten, und nur den ContentPresenter mit einem Grid füllen, welcher wiederum dann in einer Zelle den Window-Content zeigt:
<Style x:Key="customWindowStyle"
BasedOn="{StaticResource windowStyle}"
TargetType="{x:Type local:CustomWindow}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomWindow}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{TemplateBinding Source}" />
<ContentPresenter Grid.Column="1" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Dieser Style überschreibt allerdings natürlich komplett das ControlTemplate von Window, d.h. ich müsste das Template aus dem Basisstyle nochmal komplett kopieren.
Gibt es eine elegante Lösung dafür?
Ich könnte natürlich den ContentPresenter-Teil in ein DataTemplate auslagern, dann wäre ich aber für meinen customWindowStyle an ein bestimmtes ViewModel gebunden. Ich wollte eigentlich eine separate Window-Klasse mit eigenen Dependency-Properties.
Danke!