我的程序包含一个带有“ SelectionChanged”事件的列表视图。当我在列表视图中更改所选项目时,我想打开一个新窗口,其中包含与之相关的特定选项。但是问题在于新窗口出现了片刻,并且隐藏在主窗口后面。
这是我的代码的一部分:
private void display_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var editwindow = new EditWindow();
editwindow.Show();
editwindow.Focus();
}
启动时,我还在第二个窗口中包含了Focus函数。我该如何解决这个问题?
最佳答案
在事件触发时尝试更改焦点通常很麻烦,就在这里。您需要一个PostSelectionChanged事件,但该事件不可用。您可以创建自己的,但Dispatcher.BeginInvoke()可以在所有事件处理完成后运行目标。这可以解决您的问题:
private void display_SelectionChanged(object sender, SelectionChangedEventArgs e) {
Dispatcher.BeginInvoke(new Action(() => {
var editwindow = new EditWindow();
editwindow.Show();
}));
}