Ich schreibe ein WPF-Steuerelement, das eine Schaltfläche unterklassifiziert. Ich stelle dann einen Standardstil in Themes \generic.xaml die wie folgt aussieht (vereinfacht):
<Style TargetType="{x:Type WPFControls:MyButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type WPFControls:MyButton}">
<Button
x:Name="PART_Button"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Ich möchte, dass der Benutzer die Möglichkeit hat, den Hintergrund des Steuerelements zu ändern, aber wenn er das nicht tut, möchte ich einen Standardwert vorgeben. Wie kann ich das tun?
Wenn ich es wie in den geposteten Code zu tun, ist der Hintergrund und BorderBrush null (= nicht vorhanden), es sei denn, Benutzer explizit angibt, Sie (die effektiv zwingt Benutzer immer einen Wert bereitstellen), aber die Standard-Windows-Steuerelemente (wie Button) bieten ein Standard-Look, die noch vom Benutzer angepasst werden können. Wie kann ich dies in meinem Steuerelement tun?
Ich danke Ihnen!
Lösung von Michael Morton:
Sie können Standardwerte als Setzer im Stil angeben:
<Style TargetType="{x:Type TestTemplate:MyButton}">
<Setter Property="Background" Value="Red" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TestTemplate:MyButton}">
<Button
x:Name="PART_Button"
IsEnabled="{TemplateBinding IsEnabled}"
Content="{TemplateBinding Content}"
Background="{TemplateBinding Background}"
/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Verwendung:
<StackPanel>
<TestTemplate:MyButton Background="Blue">Explicitly blue</TestTemplate:MyButton>
<TestTemplate:MyButton>Naturally red</TestTemplate:MyButton>
</StackPanel>