C#学习教程:新的WPF窗口仅显示在原始窗口下方分享


新的WPF窗口仅显示在原始窗口下方

在我的WPF应用程序中,我在主窗体上有一个ListView,它显示来自DataSet的绑定数据。 当用户双击ListView中的行时,它会打开一个详细信息窗口。

在我的XAML中,我使用样式在listview上创建双击处理程序:

   ...  

在代码隐藏中,我有一个跟踪打开的详细信息窗口的字典(多个可以一次打开),这样如果一个细节窗口已经打开,它就会被带到前面。 我像这样处理双击:

 private void HandleDoubleClick(object sender, MouseEventArgs e) { DataRowView clickedRow = ((ListViewItem)sender).Content as DataRowView; int row = (int)clickedRow.Row["ID"]; if (!displayedCards.ContainsKey(row)) { DetailWindow window = new DetailWindow(RetrieveData(row)); //window.Owner = this; displayedCards.Add(row, window); window.Show(); } else { displayedCards[row].Activate(); } } 

我的问题是,使用上面的代码,详细信息窗口在主窗体后面打开。 如果我设置了所有者信息( window.Owner = this ),则会在主窗体的顶部打开详细信息窗口,但主窗体永远不会出现在详细信息窗口的前面。

displayedCards[row].Activate()按预期工作,将该细节窗口带到所有其他细节窗口的前面,但它成为上述相同问题的受害者 – 它不会出现在主窗口的前面。

我想要完成的是将细节窗口放在与主窗口相同的层/层(/ z顺序?)上,这样两者都可以显示在彼此的顶部,并使细节窗口显示在打开时的主要forms。

编辑:如果重要,则详细信息窗口没有WindowStyle并且AllowsTransparency设置为true。 我也没有窗口标题,窗口没有出现在任务栏中。 当试图解决这个问题时,我尝试将WindowStyle设置为SingleBorderWindow ,并且出现同样的问题,除了在绘制细节窗口时详细窗口的边框显示在主窗体的顶部,然后它被推到后面主要forms。 在显示详细信息窗口后,我的双击处理程序本质上是否可以将主窗体拉到前面?

您似乎没有告诉事件路由系统您已处理该事件。 尝试将e.Handled设置为true,告诉WPF不允许进一步处理您的事件。 有关Handled属性如何更改事件路由的详细信息,请参阅RoutedEventArgs.Handled属性和将路由事件标记为已处理,以及类处理 。

上述就是C#学习教程:新的WPF窗口仅显示在原始窗口下方分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/959756.html

发表评论

邮箱地址不会被公开。 必填项已用*标注