gpt4 book ai didi

c# - 在 WPF 日历上标记特定日期

转载 作者:太空宇宙 更新时间:2023-11-03 12:01:09 24 4
gpt4 key购买 nike

我正在尝试从 WPF 日历控件上的数据库源中标记特定日期。

这是代码片段。

XAML

<Style x:Key="calendarDayButtonStyle" TargetType="CalendarDayButton">
<Calendar Name="CalendarSelectDate" />

.cs代码。

var dateList = GetDatesFromDB();
Style dayButtonStyle = (Style)this.Resources["calendarDayButtonStyle"];
foreach (DateObject date in dateList)
{
var DataTrigger dataTrigger = new DataTrigger() { Binding = new Binding("Date"), Value = new DateTime(date.Year, date.Month, date.Day) }; //
dataTrigger.Setters.Add(new Setter(FontWeightProperty, FontWeights.Bold));
dayButtonStyle.Triggers.Add(dataTrigger); // This will throw TriggerCollection -exception.
}
calendarDayButtonStyle.CalendarDayButtonStyle = dayButtonStyle; // this will sealed TriggerCollection.

此代码适用于初始运行时。

但是,如果在运行时事件上再次运行它,比如我将新日期添加到数据库中然后再次运行代码,它将抛出 在使用(密封)“TriggerCollection”之后,它不能被修改。 错误。

据我所知,在将样式分配给日历后,TriggerCollection 被密封。

有没有更好的方法在 WPF 日历上动态标记日期?

最佳答案

每次都创建一个新的Style。您可以使用 BasedOn 属性将其基于您在 XAML 中定义的那个:

var dateList = GetDatesFromDB();
Style dayButtonStyle = new Style() { BasedOn = (Style)this.Resources["calendarDayButtonStyle"] };
foreach (DateObject date in dateList)
{
var dataTrigger = new DataTrigger() { Binding = new Binding("Date"), Value = new DateTime(date.Year, date.Month, date.Day) };
dataTrigger.Setters.Add(new Setter(FontWeightProperty, FontWeights.Bold));
dayButtonStyle.Triggers.Add(dataTrigger);
}
dayButtonStyle.Seal();
calendarDayButtonStyle.CalendarDayButtonStyle = dayButtonStyle;

关于c# - 在 WPF 日历上标记特定日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56928954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com