WPF Window 在列表框项目双击事件处理程序中弹出后失去焦点
WPF Window loses focus after poping up in ListBoxItem's double click event handler
我想在新的Windows中显示ListBox
中一些对象的详细信息,所以我在ListBoxItem
的[中创建并显示了一个新的Window =15=]处理程序。
这是一个例子:
MainWindow.xaml:
<Window x:Class="Test.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ListBox>
<ListBoxItem MouseDoubleClick="ListBoxItem_MouseDoubleClick" Content="Test" />
</ListBox>
</Window>
MainWindow.xaml.cs:
using System.Windows;
using System.Windows.Input;
namespace Test
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ListBoxItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
(new Window()).Show();
}
}
}
如果我双击 "Test" 项,会弹出一个新的 Window,然后很快就会失去焦点。为什么?如何防止新的失去焦点?
另外,我不想用ShowDialog
的方法,因为我可能需要同时打开多个Windows。
在鼠标单击事件(或其他 UI 事件)中间执行 UI 操作通常会导致意外行为,就像您所看到的那样。请参阅此答案以获取解决方法:WPF TreeView restores its focus after double click
我想在新的Windows中显示ListBox
中一些对象的详细信息,所以我在ListBoxItem
的[中创建并显示了一个新的Window =15=]处理程序。
这是一个例子:
MainWindow.xaml:
<Window x:Class="Test.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ListBox>
<ListBoxItem MouseDoubleClick="ListBoxItem_MouseDoubleClick" Content="Test" />
</ListBox>
</Window>
MainWindow.xaml.cs:
using System.Windows;
using System.Windows.Input;
namespace Test
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ListBoxItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
(new Window()).Show();
}
}
}
如果我双击 "Test" 项,会弹出一个新的 Window,然后很快就会失去焦点。为什么?如何防止新的失去焦点?
另外,我不想用ShowDialog
的方法,因为我可能需要同时打开多个Windows。
在鼠标单击事件(或其他 UI 事件)中间执行 UI 操作通常会导致意外行为,就像您所看到的那样。请参阅此答案以获取解决方法:WPF TreeView restores its focus after double click