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