是否可以设置密度Bar的高度UWP CalendarView

时间:2018-06-19 09:26:49

标签: uwp

我想知道,如果可以在UWP CalendarView控件中设置密度条的高度吗?

亲切的问候,

马丁

1 个答案:

答案 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