You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改CalendarView控件中日项(1、2、3…)的前景色?

解决CalendarViewDayItemChanging设置Foreground不生效的问题
  • 直接赋值args.Item.Foreground无效,通常是因为CalendarView默认模板中,日期文本的Foreground绑定了内部资源或模板控件属性,而非直接使用DayItem的Foreground属性。可以通过以下两种方案解决:

方法1:调用专用的SetForeground方法

替换直接赋值的写法,使用CalendarViewDayItem提供的专用方法设置前景色:

private void CalendarView_CalendarViewDayItemChanging(CalendarView sender, CalendarViewDayItemChangingEventArgs args)
{
    args.Item.SetForeground(Brushes.Green);
}

这个方法会正确穿透模板,将颜色应用到日期文本元素上。

方法2:修改CalendarView模板,绑定Foreground属性

如果需要更灵活的自定义样式,可以修改CalendarView的ControlTemplate,找到模板内显示日期的TextBlock控件,将其Foreground绑定到模板父级的Foreground:

<!-- 简化的模板示例 -->
<ControlTemplate TargetType="CalendarViewDayItem">
    <Grid>
        <TextBlock x:Name="DayText"
                   Text="{Binding DayNumber}"
                   Foreground="{TemplateBinding Foreground}"/>
        <!-- 其他状态相关控件 -->
    </Grid>
</ControlTemplate>

修改完成后,直接设置args.Item.Foreground = Brushes.Green即可生效。

额外检查点

  • 确认CalendarView已正确绑定CalendarViewDayItemChanging事件,比如在XAML中添加:
<CalendarView CalendarViewDayItemChanging="CalendarView_CalendarViewDayItemChanging"/>

内容的提问来源于stack exchange,提问作者Codingtime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:52:04