1

我的程序包含一个带有“SelectionChanged”事件的列表视图。当我在列表视图中更改所选项目时,我想打开一个新窗口,其中包含与之相关的特定选项。但问题是新窗口出现了片刻,它隐藏在主窗口后面。这是我的代码的一部分:

private void display_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var editwindow = new EditWindow();
        editwindow.Show();
        editwindow.Focus();
    }

启动时,我还在第二个窗口中包含了焦点功能。我该如何解决这个问题?

4

2 回答 2

4

触发事件时尝试更改焦点通常很麻烦,它就在这里。您需要一个 PostSelectionChanged 事件,但这不可用。您可以创建自己的,Dispatcher.BeginInvoke() 可以在所有事件处理完成后运行目标。这解决了你的问题:

private void display_SelectionChanged(object sender, SelectionChangedEventArgs e) {
    Dispatcher.BeginInvoke(new Action(() => {
       var editwindow = new EditWindow();
       editwindow.Show();
    }));
}
于 2013-07-28T21:14:14.867 回答
0

使用激活()函数:

editWindow.Activate();
于 2013-07-28T22:37:32.337 回答