gpt4 book ai didi

wpf - TreeView 项 : How to make selection change occur on Click instead of MouseDown?

转载 作者:行者123 更新时间:2023-12-02 11:22:30 26 4
gpt4 key购买 nike

背景:我正在从 TreeView 实现拖放。要求是拖动项目不应更改选择 - 只有完整的单击(同一项目上的鼠标向上)才能选择该项目。

但是,TreeView 的默认行为是在 MouseDown 上引发 SelectedItemChanged 事件。关于如何改变它的任何想法?

谢谢!

编辑:我忘了提到一个重要的点 - 我的歉意。我正在使用 Gong drag&drop framework对于所有拖放操作,因为它与 MVVM 很好地融合(在我的 View 中不需要隐藏代码)。拖放逻辑完全在 ViewModel 中处理,通过 Views 的 XAML 中的附加属性。

因此,解决方案涉及PreviewMouseDown并且自己处理所有的选择和拖动逻辑会适得其反。所以我只是在寻找一种(简单的)方法来防止 TreeView 控件在鼠标按下时更改选择,同时仍然引发通常的冒泡事件,如 MouseDown , MouseMove等等,以便拖放库按设计工作。

我的下一个想法是自己修改龚拖放库代码 - 我只是希望我可以避免这种情况,有人会想出一种简单的方法来改变 TreeView 在这方面的行为。

最佳答案

您可以使用 tunneling events喜欢 PreviewMouseDownTreeViewItems ,这些将在事件到达控件内部之前处理,因此您可以通过设置 e.Handled = true 来拦截它们。 .将此事件与 MouseMove 的隧道版本结合使用和 MouseUp实现一些自定义的拖动和选择逻辑。

如果没有拖动,您可能需要拦截所有事件并手动选择,但也许您可以找到更好或更优雅的方法。我希望这可以帮助您完成这项工作。

关于wpf - TreeView 项 : How to make selection change occur on Click instead of MouseDown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7853759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com