我想在wpf日期选择器控件上使用新样式的一些自定义功能。所以,我扩展了WPF日期选择器控件。我在一个控件库项目中创建了一个类,如下所示:
public class MaskedDatePicker : DatePicker
{
static MaskedDatePicker()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MaskedDatePicker),
new FrameworkPropertyMetadata(typeof(MaskedDatePicker)));
}
public override void OnApplyTemplate()
{
}
}
之后我在同一个项目中的Themes / Generic.xaml中创建了样式。
<Style TargetType="{x:Type local:MaskedDatePicker}">
...
<Setter Property="CalendarStyle" Value="{DynamicResource CalendarStyle}" />
<Setter Property="Template">
<Setter.Value>
...
</Setter>
</Style>
<Style x:Key="DatePickerTextBoxStyle" TargetType="{x:Type DatePickerTextBox}">
...
</Style>
<Style x:Key="CalendarStyle" TargetType="{x:Type Calendar}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Calendar}">
<StackPanel x:Name="PART_Root" HorizontalAlignment="Center">
<CalendarItem x:Name="PART_CalendarItem"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Style="{DynamicResource CalendarItemStyle}" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="CalendarItemStyle" TargetType="{x:Type CalendarItem}">
......
</Style>
现在我遇到一个问题,当我在测试项目中使用此控件时,DatePickerTextbox的样式应用于datepicker但是Calender控件的样式未应用,并且默认日历在Window中可见。