我们如何更改日历视图的日项目 (1,2,3..) 的前景?

问题描述 投票:0回答:1

我尝试使用 calendarviewdayitemchanging 事件,args.item.foreground=green 但这不起作用。

winui-3 calendarview winui
1个回答
0
投票

你可以这样试试:

<CalendarView CalendarViewDayItemChanging="CalendarView_CalendarViewDayItemChanging" />
private void CalendarView_CalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
    if (args.Item.Date.DayOfWeek is DayOfWeek.Saturday &&
        GetTextBlock(args.Item) is TextBlock saturdayTextBlock)
    {
        saturdayTextBlock.Foreground = new SolidColorBrush(Colors.SkyBlue);
    }
}

private TextBlock? GetTextBlock(CalendarViewDayItem calendarViewDayItem)
{
    int childrenCount = VisualTreeHelper.GetChildrenCount(calendarViewDayItem);

    for (int i = 0; i < childrenCount; i++)
    {
        if (VisualTreeHelper.GetChild(calendarViewDayItem, i) is TextBlock textBlock)
        {
            return textBlock;
        }
    }

    return null;
}

PS:您还可以使用 CommunityToolkit 中的 Framework Extensions 而不是 GetTextBlock()。

© www.soinside.com 2019 - 2024. All rights reserved.