我有一個簡單的 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);}有什么想法如何解決這個問題嗎?
1 回答

MM們
TA貢獻1886條經驗 獲得超2個贊
所以我發現問題完全出在其他地方。通過雙擊 ListViewItem 從 ListView 打開詳細信息窗口。我在主窗口的 UserControl XAML 文件中處理該事件,如下所示:
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseDoubleClick">
<i:InvokeCommandAction Command="{Binding OpenDetail}" CommandParameter="{Binding ElementName=ListViewScripts,Path=SelectedItem.DeploymentScriptID}" />
</i:EventTrigger>
</i:Interaction.Triggers>
事實證明,我所需要做的就是用 MouseDoubleClick 替換 PreviewMouseDoubleClick。
- 1 回答
- 0 關注
- 254 瀏覽
添加回答
舉報
0/150
提交
取消