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

如何禁用Avalonia中CalendarDatePicker的鼠标滚动功能?

禁用Avalonia CalendarDatePicker的鼠标滚动功能

Avalonia的CalendarDatePicker确实没有直接禁用鼠标滚动的内置属性,不过可以通过以下两种简单方法实现需求:

方法一:通过PreviewMouseWheel事件拦截(最简方案)

直接在XAML中给CalendarDatePicker添加PreviewMouseWheel事件,在后台代码中标记事件已处理,阻止滚动事件触发日期变更:

修改后的XAML代码:

<CalendarDatePicker FontWeight="SemiBold" 
                    DisplayDateStart="{Binding Source={x:Static sys:DateTime.Now}, StringFormat=dd/MMM/yyyy}" 
                    SelectedDate="{Binding ExpiredDate}" 
                    IsTodayHighlighted="True" 
                    BorderThickness="0" 
                    VerticalContentAlignment="Center" 
                    HorizontalAlignment="Center" 
                    Background="Transparent"  
                    Watermark="Выберите дату"
                    IsEnabled="{Binding !Status}"
                    Grid.Column="1"
                    PreviewMouseWheel="CalendarDatePicker_PreviewMouseWheel"></CalendarDatePicker>

后台代码(C#):

private void CalendarDatePicker_PreviewMouseWheel(object sender, Avalonia.Input.MouseWheelEventArgs e)
{
    // 标记事件已处理,阻止后续传递
    e.Handled = true;
}

方法二:通过自定义控件样式(无代码后台)

如果不想写后台代码,可以通过修改CalendarDatePicker的控件模板,给内部的Calendar或输入区域添加滚轮事件拦截:

<Style TargetType="CalendarDatePicker">
    <Setter Property="Template">
        <ControlTemplate TargetType="CalendarDatePicker">
            <!-- 保留原有模板结构,找到内部接收滚轮事件的元素添加拦截 -->
            <Grid>
                <TextBox x:Name="TextBox"
                         PreviewMouseWheel="(s,e)=>e.Handled=true"/>
                <Popup x:Name="Popup">
                    <Calendar x:Name="Calendar"
                              PreviewMouseWheel="(s,e)=>e.Handled=true"/>
                </Popup>
            </Grid>
        </ControlTemplate>
    </Setter>
</Style>

注:实际模板结构请参考Avalonia官方默认模板,确保替换后功能正常,核心是给内部接收滚轮事件的元素添加e.Handled=true的处理。

两种方法都能有效阻止鼠标滚动改变CalendarDatePicker的选中日期,推荐第一种最简方案快速实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:05:55