в моем приложении WPF, у меня есть ListView в основной форме, которая отображает связанные данные из набора данных. Когда пользователь дважды щелкнул строку в 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 = это
), детальные окна открываются сверху основной формы, но основная форма никогда не может проходить перед детализационными окнами.
Показатели [ROW] [ROW] .activate ()
работает, как я ожидал, принося это окно детали на переднюю часть всех других деталей Windows, но оно падает жертвой такой же проблемы, как указано выше - это не делает T прийти перед главным окном.
То, что я хочу достичь, - это иметь детальные окна на одном уровне / слое (/ z порядок?) В качестве главного окна, чтобы оба могли появиться в верхней части друг друга и иметь отображение деталей верх основной формы, когда они открыты.
Отредактируйте: Если важно, детальное окно не имеет WindowStyle
и AuthoStransparence
установлено значение true. У меня также нет заголовка окна, и окно не отображается в панели задач. При попытке выяснить это, я попробовал установить WindowStyle
oneboborderwindow
, и происходит такая же проблема, за исключением того, что граница детального окна показана сверху основной формы, как Окно детали нарисовано, а затем нажато позади основной формы. Может ли мой двойной щелчок по существу вытащить основную форму спереди после того, как окно детали отображается?