Мой C # / WPF проект нуждается в календаре. Мы собираемся использовать его, чтобы выбрать диапазон дат для планирования встреч. Мне сказали, что календарь по умолчанию слишком мал, чтобы его могли использовать некоторые наши представители, поэтому я работал над его изменением.
<toolkit:Calendar Grid.Row="1" x:Name="DateWindowCalendar"
BorderBrush="White" BorderThickness="0"
Style="{StaticResource PopupCalendarStyle}"
DisplayMode="Month" SelectionMode="SingleRange"
DisplayDateStart="{Binding FirstDayOfMonth}"
AutomationProperties.AutomationId="ToolkitCalendarId"
VerticalAlignment="Top">
</toolkit:Calendar>
И я создал этот стиль:
<Style x:Key="PopupCalendarStyle" TargetType="toolkit:Calendar">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="toolkit:Calendar">
<StackPanel Margin="0" HorizontalAlignment="Center" x:Name="Root">
<toolkit:Calendar x:Name="Calendar"
SelectedDate="{TemplateBinding SelectedDate}"
DisplayDateStart="{TemplateBinding DisplayDateStart}"
SelectionMode="{TemplateBinding SelectionMode}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
SelectedDatesChanged="Calendar_SelectedDatesChanged">
<toolkit:Calendar.CalendarDayButtonStyle>
<Style>
<Setter Property="Button.Height" Value="34"/>
<Setter Property="Button.Width" Value="34" />
<Setter Property="Button.FontSize" Value="16" />
</Style>
</toolkit:Calendar.CalendarDayButtonStyle>
<toolkit:Calendar.CalendarButtonStyle>
<Style>
<Setter Property="Button.Height" Value="34"/>
<Setter Property="Button.Width" Value="34"/>
<Setter Property="Button.FontSize" Value="16"/>
</Style>
</toolkit:Calendar.CalendarButtonStyle>
</toolkit:Calendar>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Все почти идеально. Я указываю свой диапазон, я могу отслеживать выбранные даты (предоставляется с помощью события SelectedDatesChanged вместо свойства SelectedDates.
Проблема в том, что мне также нужно иметь возможность устанавливать даты отключения электроэнергии (обычно это период между первым месяцем и сегодняшним днем, хотя иногда с первого месяца по несколько дней).
Без стиля это работает:
DateWindowCalendar.BlackoutDates.Add(new CalendarDateRange(
new DateTime(DateTime.Now.Year, DateTime.Now.Month, 01), DateTime.Now));
Но когда я добавляю стиль, я не получаю отображаемых затемненных дисплеев, и еще хуже можно выбрать даты затемнения.
Я не уверен, что я пропустил, но я надеюсь, что у кого-то есть простой ответ, чтобы мне не пришлось перестраивать весь виджет.
Любая помощь приветствуется.
Спасибо
Chris