首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ListBox上的鼠标点击事件

ListBox上的鼠标点击事件
EN

Stack Overflow用户
提问于 2013-10-27 13:35:40
回答 1查看 2K关注 0票数 0

背景

我有一个自定义控件,包含一个Popup,其中包含一个ListBox

要求

当用户选择一个项目时,我需要关闭弹出窗口并对所选的项执行一些逻辑操作。在下列情况下,用户选择一项:

  1. 他用鼠标点击物品。
  2. 他选择并通过键盘导航(上下键)进行项目,然后单击enter。

问题

我已经实现了上述所有内容,但我的问题是,为了执行我的逻辑,需要倾听的事件。

如果我对SelectionChanged事件执行我的逻辑,当用户单击所选的项时,它将不会触发,因此我错过了我的第一个场景。如果我在PreviewMouseLeftButtonDown上执行我的逻辑,它会在选择改变之前触发,所以我不知道用户选择了什么。这也是为什么我不能同时使用。

我想听ListBoxItem事件来完成这个任务(How to capture a mouse click on an Item in a ListBox in WPF?),或者从隐式ListBoxItem样式(WPF Interaction triggers in a Style to invoke commands on View Model)中触发一个命令,但它们对我不起作用。

我想出的最好的想法是通过行为或行动创建某种“事后选择”的MouseButtonDown事件,但我不知道该如何做,或者这是否是一条道路。

知道怎么创造这样的东西吗?还是有更好的解决办法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-27 14:02:56

答案是对Bind属性进行ListBox.SelectedItem处理,并处理控件的PreviewKeyDown事件。这样,您将始终知道哪个项是选定的项,以及何时按下Enter键:

代码语言:javascript
运行
复制
public static readonly DependencyProperty SelectedItemProperty = DependencyProperty.
    Register("SelectedItem", typeof(YourDataType), typeof(YourControl), 
    new UIPropertyMetadata(null, OnSelectedItemPropertyChanged));

public YourDataType SelectedItem 
{
    get { return (YourDataType)GetValue(SelectedItemProperty); }
    set { SetValue(SelectedItemProperty, value); }
}

private static void OnSelectedItemPropertyChanged(DependencyObject sender, 
    DependencyPropertyChangedEventArgs e)
{
    // User has selected an item
}
...
private void Control_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter || e.Key == Key.Return)
    {
        // User pressed Enter... do something with SelectedItem property here
    }
}

更新>>>

好吧,我想我现在能更好地理解你的问题了。最简单的解决方案是,如果您可以稍微修改需求,以便;

  1. 使用鼠标或键盘上/下键选择项。
  2. 使用Enter键选择项

这样,当用户选择时,您总是知道所选的项目。但是,如果不能这样做,可以处理PreviewMouseLeftButtonUp而不是PreviewMouseLeftButtonDown事件吗?我不是百分之百肯定,但我认为这会发生在选择后作出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19618648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档