Я создал свойство для изменения цвета календаря.Все работает нормально, но если я использую это свойство в DatePicker, он не работает.Тот же настроенный календарь использовался в указателе даты.
Кроме того, у меня есть свойство менять стиль календаря, который хорошо работает в обоих случаях, но я не знаю, почему изменение цвета не работает!
Это мой класс свойств:
public class ColorStyle
{
public static readonly DependencyProperty HolidayContentStyleProperty = DependencyProperty.RegisterAttached(
"HolidayContentStyle", typeof(Style), typeof(ColorStyle), new FrameworkPropertyMetadata(ResourceHelper.GetResource<Style>(ResourceHolidayContentStyleToken.LabelDefault), FrameworkPropertyMetadataOptions.Inherits));
public static void SetHolidayContentStyle(DependencyObject element, Style value)
{
element.SetValue(HolidayContentStyleProperty, value);
}
public static Style GetHolidayContentStyle(DependencyObject element)
{
return (Style)element.GetValue(HolidayContentStyleProperty);
}
public static readonly DependencyProperty SelectedDateStyleProperty = DependencyProperty.RegisterAttached(
"SelectedDateStyle", typeof(Brush), typeof(ColorStyle), new FrameworkPropertyMetadata(default(Brushes), FrameworkPropertyMetadataOptions.Inherits));
public static void SetSelectedDateStyle(DependencyObject element, Brush value)
{
element.SetValue(SelectedDateStyleProperty, value);
}
public static Brush GetSelectedDateStyle(DependencyObject element)
{
return (Brush)element.GetValue(SelectedDateStyleProperty);
}
}
, и это xaml для привязки свойства к стилю календаря
<Style x:Key="CalendarDayButtonStyle" TargetType="primitives:CalendarDayButton">
...
...
<Rectangle x:Name="SelectedBackground" Fill="{Binding Path=(controls:ColorStyle.SelectedDateStyle),RelativeSource={RelativeSource TemplatedParent}, FallbackValue={StaticResource PrimaryBrush}}" Opacity="0" RadiusY="16" RadiusX="16"/>
</Style>
, а в примере приложения это прекрасно работает
<pc:Calendar pc:ColorStyle.SelectedDateStyle="{StaticResource WarningBrush}" />
но это не работает
<pc:DatePicker pc:ColorStyle.SelectedDateStyle="{StaticResource WarningBrush}" />
, и это для HolidayContentStyleProperty, которые отлично работают как в
calendar.xaml стиле
<Label Style="{Binding Path=(controls:ColorStyle.HolidayContentStyle),RelativeSource={RelativeSource TemplatedParent}, FallbackValue={StaticResource LabelDefault}}" HorizontalAlignment="Stretch">
, так и в примере
<pc:Calendar pc:ColorStyle.HolidayContentStyle="{StaticResource LabelWarningStyle}" />
<pc:DatePicker pc:ColorStyle.HolidayContentStyle="{StaticResource LabelWarningStyle}" />