日历样式不适用于自定义wpf datepicker

时间:2014-08-05 06:18:23

标签: c# wpf datepicker custom-controls

我想在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中可见。

0 个答案:

没有答案