背景
我有自定义控件,Popup
其中包含一个ListBox
要求
当用户选择一个项目时,我需要关闭弹出窗口并对所选项目执行一些逻辑。用户在以下情况下选择项目:
- 他用鼠标点击项目。
- 他通过键盘导航(上/下键)选择和项目,然后单击输入
问题
我已经实现了上述所有内容,但我的问题是要监听的事件以执行我的逻辑。
如果我在事件上执行我的逻辑SelectionChanged
,当用户单击所选项目时它不会触发,所以我错过了我的第一个场景。如果我在它上执行我的逻辑,PreviewMouseLeftButtonDown
它将在选择更改之前触发,所以我不知道用户选择了什么。这也是我不能同时使用两者的原因。
我想过监听ListBoxItem
事件来执行此操作(如何在 WPF 中的 ListBox 中捕获鼠标单击项目?)或从隐式ListBoxItem
样式触发命令(样式中的 WPF 交互触发以调用视图模型上的命令)但是他们没有为我工作。
我想出的最佳想法是通过行为或动作创建某种“后选择”MouseButtonDown 事件,但我不确定如何,或者这是否是可行的方法。
任何想法如何创建这样的东西?或者有更好的解决方案吗?