В моем приложении WPF у меня есть ListView в главной форме, который отображает связанные данные из DataSet. Когда пользователь дважды щелкает строку в ListView, он открывает подробное окно.
В моем XAML я использовал стиль для создания обработчика двойного щелчка в просмотре списка:
<Style x:Key="ListViewDoubleClick" TargetType="{x:Type ListViewItem}">
<EventSetter Event="MouseDoubleClick" Handler="HandleDoubleClick" />
</Style>
...
<ListView Name="searchResults" ItemContainerStyle="{StaticResource ListViewDoubleClick}>
В выделенном фрагменте кода у меня есть словарь, который отслеживает открытые окна сведений (можно открывать несколько одновременно), так что если окно сведений уже открыто, оно выводится на передний план. Я работаю с двойным щелчком так:
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?), Что и главное окно, чтобы оба они могли отображаться друг над другом, и чтобы подробные окна отображались на вершина основной формы, когда они открыты.
Редактировать: Если это важно, в подробном окне нет WindowStyle
, а AllowsTransparency
имеет значение true. У меня также нет заголовка окна, и окно не появляется на панели задач. При попытке выяснить это, я попытался установить WindowStyle
на SingleBorderWindow
, и возникает та же проблема, за исключением того, что граница подробного окна отображается поверх главной формы при рисовании подробного окна, и затем он отталкивается от основной формы. Может ли мой обработчик двойного щелчка вытягивать основную форму вперед после отображения подробного окна?