栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在wpf中禁用itemscontrol上的鼠标滚轮

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在wpf中禁用itemscontrol上的鼠标滚轮

您所引用的答案正是导致问题的原因,ScrollViewer中的ListBox(由ScrollViewer等组成)捕获MouseWheel事件并对其进行处理,防止其冒泡,因此ScrollViewer不知道该事件曾经发生过。

为您的ListBox使用以下极其简单的ControlTemplate进行演示(请注意,其中没有ScrollViewer,因此不会捕获MouseWheel事件)ScrollViewer仍将使用鼠标在ListBox上滚动。

<UserControl.Resources>     <ControlTemplate x:Key="NoScroll">         <ItemsPresenter></ItemsPresenter>     </ControlTemplate></UserControl.Resources><ScrollViewer>    <SomeContainerControl>        <.... what ever other controls are inside your ScrollViewer>        <ListBox Template="{StaticResource NoScroll}"></ListBox>    <SomeContainerControl></ScrollViewer>

您确实可以选择在进入ScrollViewer时捕获鼠标,因此它将继续接收所有鼠标事件,直到释放鼠标为止,但是,如果您选择此选项,则需要将其他任何鼠标事件分配给ScrollViewer中包含的控件。想要响应…下面的MouseEnter
MouseLeave事件处理程序就足够了。

private void ScrollViewerMouseEnter(object sender, MouseEventArgs e){    ((ScrollViewer)sender).CaptureMouse();}private void ScrollViewerMouseLeave(object sender, MouseEventArgs e){    ((ScrollViewer)sender).ReleaseMouseCapture();}

但是,我提供的两种解决方法都不是真正的首选,我建议您重新考虑您实际上要尝试执行的操作。如果您解释您要解决的问题,我相信您会得到更多建议…



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/408399.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号