我在寫一個WPF控件,它的子類是一個Button。我再提供主題\ generic.xaml默認樣式,看起來像這樣(簡化):WPF ControlTemplate:如何爲TemplateBinding提供默認值?
<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>
我想用戶必須改變控件的背景下的機會,但如果他沒有,我想提供默認值。我該怎麼做?除非用戶明確指定它們(這有效地強制用戶總是提供一些值),但是標準的Windows控件(如Button)不會顯示在背景和BorderBrush中(不存在)提供默認外觀,仍然可以由用戶自定義。如何在我的控制下做到這一點?
謝謝!
解決方案由邁克爾·莫頓:
您可以提供的默認值作爲制定者的風格:
<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>
用法:
<StackPanel>
<TestTemplate:MyButton Background="Blue">Explicitly blue</TestTemplate:MyButton>
<TestTemplate:MyButton>Naturally red</TestTemplate:MyButton>
</StackPanel>
很酷,這就是我想知道的。我在問題中添加了解決方案。謝謝! – 2009-11-25 04:14:57