【发布时间】:2014-05-26 04:19:41
【问题描述】:
有谁知道如何实现一个双击事件处理程序,它以新窗口成为最前面的窗口的方式打开一个新窗口? (只是通常预期的行为)。
在 WPF 中,当在双击事件处理程序中打开第二个窗口时,窗口会出现奇怪的行为。第二个窗口打开,但第一个窗口(触发双击事件的位置)立即再次激活。 在单击事件处理程序中打开一个窗口,按预期工作。第二个窗口打开并保持为前窗口。
出于演示目的,我创建了以下应用程序。两个窗口类,只有一个按钮控件。为了区分按钮控件的单击和双击,单击事件仅在按下左 shift 键时才起作用。
双击后
http://blog.mutter.ch/wp-content/uploads/2014/05/wpf_window1.png
点击后(这也是双击的预期行为)
http://blog.mutter.ch/wp-content/uploads/2014/05/wpf_window2.png
主窗口
<Window x:Class="WpfWindowSwitching.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="600">
<Grid>
<Button Margin="40"
HorizontalAlignment="Center"
VerticalAlignment="Center"
MouseDoubleClick="doubleClick"
Click="click">
<TextBlock FontWeight="Bold"
FontSize="22">
I am the first Window, double click this button...
</TextBlock>
</Button>
</Grid>
</Window>
背后的代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void doubleClick(object sender, MouseButtonEventArgs e)
{
openNewWindow();
}
private static void openNewWindow()
{
var window = new SecondWindow();
window.Show();
}
private void click(object sender, RoutedEventArgs e)
{
if (!Keyboard.IsKeyDown(Key.LeftShift)) return;
openNewWindow();
}
}
第二个窗口
<Window x:Class="WpfWindowSwitching.SecondWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="SecondWindow" Height="200" Width="600">
<Grid>
<Button Margin="40"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Click="click">
<TextBlock FontWeight="Bold"
FontSize="22">
I am the second Window
</TextBlock>
</Button>
</Grid>
</Window>
背后的代码:
public partial class SecondWindow : Window
{
public SecondWindow()
{
InitializeComponent();
}
private void click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
【问题讨论】:
标签: wpf