C# 在WPF日历上标记特定日期
我正试图从WPF日历控件的数据库源中标记特定日期 下面是代码片段 XAML 此代码在初始运行时工作 但是,如果在运行时事件上再次运行它,比如说,如果我在数据库中添加了新日期,然后再次运行代码,它将在“TriggerCollection”使用(密封)后抛出C# 在WPF日历上标记特定日期,c#,wpf,C#,Wpf,我正试图从WPF日历控件的数据库源中标记特定日期 下面是代码片段 XAML 此代码在初始运行时工作 但是,如果在运行时事件上再次运行它,比如说,如果我在数据库中添加了新日期,然后再次运行代码,它将在“TriggerCollection”使用(密封)后抛出,它将无法修改。错误 据我所知,将样式分配给日历后,TriggerCollection将被密封 是否有更好的方法在WPF日历上动态标记日期?每次都创建一个新的样式。您可以使用BasedOn属性将其建立在XAML中定义的基础上: var dateL
,它将无法修改。
错误
据我所知,将样式分配给日历后,TriggerCollection
将被密封
是否有更好的方法在WPF日历上动态标记日期?每次都创建一个新的
样式。您可以使用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;
非常感谢。但不幸的是,它产生了这个错误“只能基于目标类型为基类型“IFrameworkInputElement”的样式”
。但是,你的回答给了我一个想法。我只是在.cs上编码样式。现在,标记特定日期的触发器可以动态工作。:)calendarDayButtonStyle必须与dayButtonStyle具有相同的TargetType
。
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.
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;