将 window 推到前台

Pushing window to foreground

我正在使用列表视图向用户显示多个项目。现在我希望用户能够通过双击打开详细信息 window。这工作正常但是当 window 打开时它会立即被推到后台。

我用 window 状态等尝试了几种方法。结果在每种情况下都很糟糕(window 被推到后台或 window 是永久覆盖)。唯一相对较好的解决方案是我更改 MouseLeftButtonUp 事件中的 DoubleClick 事件。现在,当用户单击某个项目时,window 会出现在前台。

这是来自控制器的我的代码class:

public void ShowDetails(object details)
{
    Details detailWindow = new Details(this, Config.GetCultureInformation());
    detailWindow.LoadData(details);
    detailWindow.Show();
}

这是我的代码,来自 UI Class

private void listViewItem_MouseClick(object sender, MouseButtonEventArgs e)
{
    ListViewItem item = sender as ListViewItem;
    AppControl.ShowDetails(item.Content);
}

您应该将其显示为模态。

public void ShowDetails(object details)
{
    Details detailWindow = new Details(this, Config.GetCultureInformation());
    detailWindow.LoadData(details);
    detailWindow.ShowDialog(); //Instead of detailWindow.Show();
}

如果你想保留你的主 window 而不冻结使用 detailWindow.BringToFront()detailWindow.TopMost = true,在这个 other post

上抢劫

来源here.

好的。感谢您的帮助,在 Topmost 的帮助下,我找到了创建适合我的解决方案的方法。

在 window 的构造函数中,我将 topmost 设置为 true,在 Window 加载事件中,我将 topmost 设置为 false。我的 Window 在前台很显眼,但用户可以离开它并可以在主应用程序中处理事情。