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

时间:2018-10-31 20:52:22

标签: c# wpf popup controls

在我的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的许多不同配置,甚至将backgrounds属性设置为实际颜色。

下面列出了我发现有希望的(但没有产生任何积极结果)的两件事:

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控件的图像。

  • 主窗口
    • ItemsControl
      • DataGrid(ItemTemplate)
        • 弹出式窗口(CellEditingTemplate)

弹出式示例: Popup

因此,当我滚动到要查看其弹出窗口的项目时,我双击该单元格,从而启用了弹出窗口。因此,任何单个Popup都被“托管”在单个DataGrid单元中。也许这与问题有关?

1 个答案:

答案 0 :(得分:0)

似乎我的问题与我实际上正在使用单独的UserControl托管我的弹出窗口有关。将其直接 放置到我的CellEditingTemplate DataTemplate中时,它可以工作。因此,虽然我不确定如何解决最初的问题,但我的解决方法是在其自己的DataTemplate(而不是UserControl)中创建所有Popup内容,这似乎可以解决问题。