推窗前景

时间:2016-12-30 13:15:17

标签: c# wpf events mouseevent

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

我尝试了窗口状态等的几个东西。结果在每种情况下都很糟糕(窗口被推到背景或窗口是永久叠加)。唯一相对有效的解决方案是我在MouseLeftButtonUp事件中更改DoubleClick事件。当用户现在单击某个项目时,该窗口位于前台。

这是我在控制器类中的代码:

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

来自UI类的我的代码

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

2 个答案:

答案 0 :(得分:0)

你应该把它显示为模态。

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

如果您希望保持主窗口不冻结使用detailWindow.BringToFront()detailWindow.TopMost = true,请抓住此other post

的战利品

来源here

答案 1 :(得分:0)

确定。感谢您的帮助和Topmost,我找到了创建适合我的解决方案的方法。

在我窗口的构造函数中,我将最顶层设置为true,而在Window中是Loaded Event我将最顶层设置为false。我的窗口在前台很突出,但用户可以离开它并可以处理主应用程序中的内容。