Я пишу элемент управления WPF, который подклассифицирует кнопку. Затем я предоставляю стиль по умолчанию в Themes\generic.xaml, который выглядит так (упрощенный):
<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>
Я хотел бы, чтобы у пользователя была возможность изменить фон управления, но если он этого не сделает, я хотел бы предоставить значение по умолчанию. Как это сделать?
Когда я делаю это как в опубликованном коде, Background и BorderBrush имеют значение null (= nonexistent), если пользователь явно не указывает их (что фактически заставляет пользователя всегда предоставлять некоторое значение), но стандартные элементы управления Windows (например, Button) предоставляют внешний вид, который по-прежнему может быть настроен пользователем. Как это сделать под моим контролем?
Спасибо!
Решение Майкла Мортона:
Вы можете указать настройки по умолчанию в стиле:
<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>