Я пишу элемент управления WPF, который подклассифицирует кнопку. то я обеспечиваю стиль по умолчанию в Themes \ 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>
Я хотел бы пользователю иметь возможность изменить фон элемента управления, но если он не делает, Я хотел бы предоставить значение по умолчанию. Как мне это сделать?
Когда я делаю это как в размещенном коде, Background и BorderBrush имеют значение null (= несуществующий), если пользователь явно не указывает их (что фактически заставляет пользователя всегда предоставлять какое-то значение), но стандартные элементы управления 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>
Прохладный, вот что я хотел знать.Я добавил ваше решение к вопросу. Благодаря! –