WPF Popup IsOpen问题

时间:2013-04-26 21:02:24

标签: wpf xaml popup

使用找到的概念here on StackOverflow请注意,ToggleButton.IsHitTestVisiblePopup.IsOpen绑定StaysOpen="False"这应该意味着触摸外的任何地方 {{1}会导致它关闭。然而...

触摸/点击Popup中的ListBoxItem不会按预期关闭ItemsControl。触摸Popup 中的任何其他位置关闭它。根据如何设置,这似乎并没有加起来。

Popup

有什么想法吗?感谢。


修改:已解决

事实证明这种情况正在发生,因为它位于一个源自<Grid ClipToBounds="True"> <Border Name="Root"> <ToggleButton x:Name="PART_Toggle" ClickMode="Release" IsHitTestVisible="{Binding ElementName=PART_Popup, Path=IsOpen, Mode=OneWay, Converter={StaticResource BooleanInverter}}"/> </Border> <Popup x:Name="PART_Popup" IsOpen="{Binding ElementName=PART_Toggle, Path=IsChecked}" PlacementTarget="{Binding ElementName=PART_Toggle}" StaysOpen="False"> <Grid Background="Transparent"> <Grid> <!-- Anything here (outside of the Item) --> <ItemsControl> <ItemsControl.ItemTemplate> <DataTemplate> <Grid> <!-- Anything in this item template works. The popup does not close --> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </Grid> </Border> </Grid> </Popup> </Grid> 的自定义控件中。当我提出这个问题时,这似乎并不重要,抱歉。

2 个答案:

答案 0 :(得分:1)

我认为在你的情况下问题是弹出窗口的位置或大小。在尝试代码时它确实有效,但是我必须在Popup上设置Placement="Center"并在弹出窗口中设置网格的大小。

如果没有前者,弹出窗口不会放在while内部,而弹出窗口的大小只是其内容的大小(意味着没有外部点击)。

首先尝试将弹出窗口的背景设置为红色,或者查看弹出窗口是否实际定位并正确调整大小。

答案 1 :(得分:1)

原来这种情况正在发生,因为它位于从ListBox派生的自定义控件中。当我提出这个问题时,这似乎并不重要,抱歉。