我想知道,如果可以在UWP CalendarView控件中设置密度条的高度吗?
亲切的问候,
马丁
答案 0 :(得分:0)
CalendarView控件的日历网格由CalendarViewDayItem个对象组成。我们可以使用Item
的{{1}}属性在CalendarViewDayItemChanging控件的CalendarView事件中修改日期项目,以访问CalendarViewDayItem对象。 密度栏在CalendarViewDayItem中。
但是为了提高性能,CalendarViewDayItem的可视元素直接由控件呈现,而不是在控件模板中定义为XAML元素。这意味着我们无法为这些元素设置样式或重新模板化。尽管可以使用一些“日历项目”和“日项目”属性来自定义这些元素,但它们没有用于设置密度栏高度的属性。因此,我们不能修改样式来更改密度栏的高度。
因此,根据您的要求,我们可以采取其他替代方法。
如果您只是认为一个密度条标记不正确,则可以提供两个或多个带有颜色的密度条以使其更加明显。
CalendarViewDayItemChangingEventArgs
另一种方式会更复杂。因为默认样式(请参见CalendarViewDayItem样式和模板)还包含一个空的private void CalendarView_CalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
List<Color> densityColors = new List<Color>();
densityColors.Add(Colors.Green);
densityColors.Add(Colors.Green);
args.Item.SetDensityColors(densityColors);
}
,可用于将自定义XAML元素注入CalendarViewDayItem中。您的XAML元素呈现在背景元素之上,并在日期数字和标签之下。因此,您可以自定义CalendarView并更改ControlTemplate
样式以添加“密度条”,同时应公开一个属性以控制“密度条”是否可见。
这里是一个向CalendarViewDayItem
添加“密度栏”的示例样式,您可以将其放在页面的资源中以查看效果。
CalendarViewDayItem