我有一个简单的 Navigator 类,它保留窗口的实例并打开/关闭它们。当我从主窗口打开一个新窗口时,我需要新窗口位于顶部。问题是 .Focus() 和 .Activate() 都不起作用。新窗口只是闪烁,然后主窗口再次激活,即使我从未明确激活它。我用来打开新窗口的方法如下:
public Task OpenDetailAsync(int? deploymentScriptID = null)
{
if (_detailWindow == null)
{
var source = new TaskCompletionSource<bool>();
_detailWindow = new DetailWindow { DataContext = _detailViewModelFactory.Create(deploymentScriptID, this) };
_detailWindow.Closed += (sender, e) => source.TrySetResult(true);
_detailWindow.WindowStartupLocation = WindowStartupLocation.CenterScreen;
_detailWindow.Show();
_detailWindow.Activate();
_detailWindow.Focus();
return source.Task;
}
else
{
ShowMessageBox("foreign language you wouldn't understand", "lol");
return null;
}
}
因此,当我将 Navigator 类的实例注入主窗口的 DataContext,然后使用它打开详细信息窗口时,详细信息窗口被激活,闪烁,然后主窗口再次被激活,当我使用主窗口中的以下委托:
public ListWindow()
{
InitializeComponent();
Activated += ListWindow_Activated;
}
private void ListWindow_Activated(object sender, EventArgs e)
{
Console.WriteLine(DateTime.Now);
}
有什么想法如何解决这个问题吗?
MM们
相关分类