在不关闭 WPF 弹出窗口的情况下与控件进行交互

Interact With Controls Inside a WPF Popup Without It Closing

在我的 WPF 应用程序中,我试图在几个地方使用 Popup 控件,而不必在 MainWindow 中表示控件,这对于我当前的布局来说是多余和混乱的。以下 XAML 显示我当前的 Popup 及其内容。

<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 控件关闭。我尝试了 StaysOpenIsOpenFocusableAllowsTransparency 的许多不同配置,甚至将背景属性设置为实际颜色。

下面列出了我发现看起来有前途(但没有产生任何积极结果)的两件事:

Why does a WPF Popup close when its background area is clicked?

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

非常感谢任何帮助。谢谢!


编辑

澄清一下,我在 DataGrid 单元格编辑模板中使用 Popup 控件。 该应用程序基本上是一个可视化数据输入应用程序,MainWindow 中的内容用作数据输入表单。这是结构的粗略轮廓,以及实际 Popup 控件的图像。

弹出示例:

因此,当我滚动到要查看其弹出窗口的项目时,我双击该单元格,从而启用弹出窗口。因此,任何单个 Popup 都类似于单个 DataGrid 单元格中的 "hosted"。也许这与问题有关?

我的问题似乎与我实际上使用单独的 UserControl 来承载我的 Popup 这一事实有关。将它 直接 放入我的 CellEditingTemplate DataTemplate 时,它​​起作用了。因此,虽然我不确定如何解决最初的问题,但我的解决方法是在它自己的 DataTemplate(而不是 UserControl)中创建所有 Popup 内容,这似乎主要是为了解决问题。