В моем приложении WPF я пытаюсь использовать элемент управления Popup в нескольких местах вместо того, чтобы представлять элементы управления в MainWindow, что было бы избыточным и запутанным в моем текущем макете. Следующий XAML показывает мое текущее всплывающее окно и его содержимое.
<Popup x:Name="MainPopup"
StaysOpen="False"
Placement="Center"
PopupAnimation="Slide"
AllowsTransparency="True">
<Border BorderBrush="White"
Background="White"
BorderThickness="1">
<Grid Background="White">
<DataGrid>
<!--Dummy Data -->
</DataGrid>
<Button Click="Button_Click"/>
</Grid>
</Border>
</Popup>
Основная проблема заключается в том, что любая попытка взаимодействия с DataGrid или Button приводит к закрытию элемента управления Popup. Я пробовал много разных конфигураций StaysOpen
, IsOpen
, Focusable
, AllowsTransparency
, и даже установил свойства фона для реальных цветов.
Две вещи, которые я нашел, что выглядело многообещающе (но не дало никаких положительных результатов), перечислены ниже:
Почему всплывающее окно WPF закрывается при щелчке по фоновой области?
https://social.msdn.microsoft.com/Forums/security/en-US/be1a55df-8008-4af5-b782-5a15f1bc146c/wpf-how-to-restrict-the-popup-from-closing-while-click-on-a-windows-forms-element?forum=wpf
Любая помощь очень ценится. Спасибо!
EDIT
Чтобы уточнить, я использую элемент управления Popup в шаблоне редактирования ячейки DataGrid.
Приложение в основном представляет собой приложение для визуального ввода данных, а содержимое в MainWindow служит формой ввода данных. Вот приблизительный план структуры вместе с изображением фактического элемента управления Popup.
- MainWindow
- ItemsControl
- DataGrid (ItemTemplate)
- Всплывающее окно (CellEditingTemplate)
Пример всплывающего окна:
Итак, когда я прокручиваю до элемента, для которого я хочу увидеть всплывающее окно, я дважды щелкаю по этой ячейке, таким образом, активируя всплывающее окно. Таким образом, любой отдельный Popup является своего рода «размещенным» в одной ячейке DataGrid. Возможно, это связано с проблемой?