选择具有不可聚焦列表框的项目

时间:2011-08-12 10:38:26

标签: c# wpf wpf-controls

我正在使用wpf开发一个应用程序,其中文本框始终聚焦,而所有其他控件从不聚焦,为实现此目的,我为所有控件设置了属性IsFocusable = false。 其中一个控件是ListBox,如果我设置IsFocusable = false属性,ListBox项目将变为不可选,但我需要能够选择此项目。

我发现的解决方案不是很优雅和干净。 一种解决方案是使用带有样式RadioButton的ItemControl作为项目,然后使用我的视图模型中的某些方法绑定RadioButton click事件 另一个解决方案是使用附加行为捕获ListBox上的鼠标按下事件,然后找到哪个项目位于鼠标坐标,然后尝试将此项目设置为所选项目,但如果我只是设置SelectedItem属性附带的行为没有发生。

是否有更优雅高效的方法可以选择不可聚焦的ListBox项目?

编辑: 另一种可能的解决方案是使用EventManager注册鼠标左键donw事件的类处理程序:

EventManager.RegisterClassHandler(typeof(ListBoxItem),
ListBoxItem.MouseLeftButtonDownEvent,
    new RoutedEventHandler((s, o) =>
        { (s as ListBoxItem).IsSelected = true; }));

在整个应用程序中,在任何其他事件处理程序和指定类型的所有控件(本例中为ListBoxItem)之前调用类处理程序

这是我从现在开始找到的最佳解决方案

0 个答案:

没有答案