я использую 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);
}
Вы должны показать его как модальный.
Если вы хотите сохранить свое главное окно без использования заморозки
detailWindow.BringToFront()
илиdetailWindow.TopMost = true
, возьмите добычу на этом другом постеИсточник здесь .
ОК. Спасибо за вашу помощь и с Topmost I find I way to create a solution that suits for me.
В конструкторе моего окна я устанавливаю topmost в true и в окне загружается событие, которое я устанавливаю topmost в false. Мое окно видно на переднем плане, но пользователь может выйти из него и может обрабатывать вещи в главном приложении.