Выдвижение окна на передний план

я использую listview для отображения нескольких элементов для пользователя. Теперь я хочу, чтобы пользователь имел возможность открыть окно сведений с двойным щелчком мыши. Это работает хорошо, но когда окно открыто, оно сразу же отодвигается на задний план.

Я попробовал несколько вещей с состоянием окна и т.д. результат был в каждой ситуации ужасен (окно отодвигается на задний план или окно является постоянным наложением). Единственное решение, которое работает относительно хорошо, заключается в том, что я изменяю событие DoubleClick в событии MouseLeftButtonUp. Когда пользователь щелкает элемент, окно находится на переднем плане.

Это мой код из класса controller:

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 ответа

  1. Вы должны показать его как модальный.

    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, возьмите добычу на этом другом посте

    Источник здесь .

  2. ОК. Спасибо за вашу помощь и с Topmost I find I way to create a solution that suits for me.

    В конструкторе моего окна я устанавливаю topmost в true и в окне загружается событие, которое я устанавливаю topmost в false. Мое окно видно на переднем плане, но пользователь может выйти из него и может обрабатывать вещи в главном приложении.