DatePicker的CalendarStyle不同于我自定义的CalendarStyle
本文关键字:CalendarStyle 自定义 不同于 DatePicker | 更新日期: 2023-09-27 17:50:47
我有一个自定义Calendar样式和一个自定义DatePicker样式。
代码在我的MyCustomSkin。xaml (from my library project)
<Style TargetType="{x:Type Calendar}">
<Setter Property="Background" Value="Red"/>
</Style>
<Style TargetType="{x:Type DatePicker}">
<Setter Property="Background" Value="Green"/>
</Style>
他们都在我的MyCustomSkin。xaml ResourceDictionary(生成MyCustomSkin.dll的独立解决方案),我在应用程序中引用。
Code in my App.xaml (from my application)
<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MyCustomSkin;component/MyCustomSkin.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
主窗口中的代码。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow">
<Grid>
<DatePicker HorizontalAlignment="Right" />
<Calendar HorizontalAlignment="Left"/>
</Grid>
</Window>
当我在应用程序中创建日历时(没有指定任何样式),背景是红色的。当我在应用程序中创建一个DatePicker(没有指定任何样式)时,背景是绿色的,但其日历的背景是系统日历(=>而不是红色)。
为什么?我以为我用我的日历覆盖了所有的系统日历。为什么它应用自定义样式的日历,而不是日历的DatePicker?
谢谢!
你的MyCustomSkin。Xaml应该是:
<Style TargetType="{x:Type Calendar}" >
<Setter Property="Background" Value="Red" />
</Style>
<Style TargetType="{x:Type DatePicker}" >
<Setter Property="Background" Value="Green" />
<Setter Property="CalendarStyle">
<Setter.Value>
<Style TargetType="{x:Type Calendar}" BasedOn="{StaticResource {x:Type Calendar}}"/>
</Setter.Value>
</Setter>
</Style>
DatePicker有一个默认的CalendarStyle,它将在组件初始化时应用。