【发布时间】:2010-04-15 12:43:08
【问题描述】:
简单的问题:
1) 我在 ListBox 中的 ListBoxItem 上单击并按住鼠标。
2) 现在我将鼠标光标向下拖动到列表中的下一个 ListBoxItem
它现在选择这个新项目。我想禁用它。所以用户必须点击一个项目来选择它。不只是拖过去。
我开启了单选。
非常感谢任何想法:)
【问题讨论】:
简单的问题:
1) 我在 ListBox 中的 ListBoxItem 上单击并按住鼠标。
2) 现在我将鼠标光标向下拖动到列表中的下一个 ListBoxItem
它现在选择这个新项目。我想禁用它。所以用户必须点击一个项目来选择它。不只是拖过去。
我开启了单选。
非常感谢任何想法:)
【问题讨论】:
这主要是为了像我这样仍然需要知道这一点的人的利益。
majocha 提供的链接就是答案,尽管据我所知,它并没有以特别好的方式实现,因为它在 MouseUp 事件及其布尔标志周围有一个洞。当您只需询问MouseEventArgs 以了解按钮是否被按下时,为什么要这样做?也许截至 2010 年的 WPF 还没有这种能力。
这是我的 WPF 4 代码。您只需在 ListBox 上处理 MouseMove 并说:
private void ListBox_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
(sender as ListBox).ReleaseMouseCapture();
}
多田!
【讨论】:
我想覆盖 OnPreviewMouseMove 就可以了。 阅读this 了解类似问题。
【讨论】: