свойство зависимости не работает в datepicker wpf - PullRequest
0 голосов
/ 29 мая 2019

Я создал свойство для изменения цвета календаря.Все работает нормально, но если я использую это свойство в 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}" />
...