我有ToggleButton
,显示Popup
。显示Popup
,因为StaysOpen="False"
会自动关闭。但ClickMode="Press"
打破了弹出窗口,因为Popup
未正确捕获鼠标。
这可以在不使用ClickMode="Release"
的情况下在XAML或代码中解决吗?
以下代码重现了该问题:
<ToggleButton x:Name="toggleButton"
ClickMode="Press"
Content="Toggle Popup" />
<Popup Width="{Binding ElementName=toggleButton, Path=ActualWidth}"
IsOpen="{Binding IsChecked, ElementName=toggleButton}"
Placement="Bottom"
PlacementTarget="{Binding ElementName=toggleButton}"
StaysOpen="False">
<Button>Content</Button>
</Popup>
我找到了解决方案:
在ToggleButton
添加LostMouseCapture
事件处理程序和(如果Mouse.Captured == null
)调用Mouse.Capture(inputElement, CaptureMode.SubTree)
。其中inputElement
是实施Popup
的{{1}}中的第一个逻辑子项。