在不关闭 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 控件关闭。我尝试了 StaysOpen
、IsOpen
、Focusable
、AllowsTransparency
的许多不同配置,甚至将背景属性设置为实际颜色。
下面列出了我发现看起来有前途(但没有产生任何积极结果)的两件事:
Why does a WPF Popup close when its background area is clicked?
非常感谢任何帮助。谢谢!
编辑
澄清一下,我在 DataGrid 单元格编辑模板中使用 Popup 控件。
该应用程序基本上是一个可视化数据输入应用程序,MainWindow 中的内容用作数据输入表单。这是结构的粗略轮廓,以及实际 Popup 控件的图像。
- 主窗口
- 项目控制
- 数据网格(项目模板)
- 弹出窗口(CellEditingTemplate)
弹出示例:
因此,当我滚动到要查看其弹出窗口的项目时,我双击该单元格,从而启用弹出窗口。因此,任何单个 Popup 都类似于单个 DataGrid 单元格中的 "hosted"。也许这与问题有关?
我的问题似乎与我实际上使用单独的 UserControl 来承载我的 Popup 这一事实有关。将它 直接 放入我的 CellEditingTemplate DataTemplate 时,它起作用了。因此,虽然我不确定如何解决最初的问题,但我的解决方法是在它自己的 DataTemplate(而不是 UserControl)中创建所有 Popup 内容,这似乎主要是为了解决问题。
在我的 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 控件关闭。我尝试了 StaysOpen
、IsOpen
、Focusable
、AllowsTransparency
的许多不同配置,甚至将背景属性设置为实际颜色。
下面列出了我发现看起来有前途(但没有产生任何积极结果)的两件事:
Why does a WPF Popup close when its background area is clicked?
非常感谢任何帮助。谢谢!
编辑
澄清一下,我在 DataGrid 单元格编辑模板中使用 Popup 控件。 该应用程序基本上是一个可视化数据输入应用程序,MainWindow 中的内容用作数据输入表单。这是结构的粗略轮廓,以及实际 Popup 控件的图像。
- 主窗口
- 项目控制
- 数据网格(项目模板)
- 弹出窗口(CellEditingTemplate)
- 数据网格(项目模板)
- 项目控制
弹出示例:
因此,当我滚动到要查看其弹出窗口的项目时,我双击该单元格,从而启用弹出窗口。因此,任何单个 Popup 都类似于单个 DataGrid 单元格中的 "hosted"。也许这与问题有关?
我的问题似乎与我实际上使用单独的 UserControl 来承载我的 Popup 这一事实有关。将它 直接 放入我的 CellEditingTemplate DataTemplate 时,它起作用了。因此,虽然我不确定如何解决最初的问题,但我的解决方法是在它自己的 DataTemplate(而不是 UserControl)中创建所有 Popup 内容,这似乎主要是为了解决问题。