新窗口在MouseDoubleClick事件的后台打开

时间:2013-01-17 03:13:33

标签: c# wpf

我在MouseDoubleClick定义中定义了一个ListView.ItemContainerStyle事件处理程序:

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <EventSetter Event="MouseDoubleClick" Handler="MyClass_MouseDoubleClick" />
    </Style>
</ListView.ItemContainerStyle>

事件处理程序定义为:

private void MyClass_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    ListViewItem listViewItem = (ListViewItem)sender;
    MyClass senderItem = (MyClass)(listViewItem.Content);
    EditFile editFileWindow = new EditFile(senderItem);
    editFileWindow.Show();
}

这可以正常工作,但新窗口弹出时会显示在我的主应用程序窗口后面。如何在加载后将焦点设置到新窗口?

我尝试在窗口的类构造函数的末尾添加this.Focus(),但它没有改变任何内容。

2 个答案:

答案 0 :(得分:1)

试试这个:

editFileWindow.ShowDialog(); 

答案 1 :(得分:0)

只需调用ShowDialog()即可阻止主UI线程。

尝试通过Dispatcher.BeginInvoke调用它,如下所示:

 this.Dispatcher.BeginInvoke( new Action( () => editFileWindow.Show()));