我正在尝试创建一个下拉控件,其中包含一个 ToggleButton 和一个带有 TabControl 的 Popup 控件。我的问题是,除非我单击其中的某个控件,否则弹出窗口不会自动关闭。
考虑下面的示例,其中弹出窗口包含一个 TabControl,它本身包含一个 TabItem 内的日历控件。
预期的行为是弹出窗口在失去焦点时关闭(即单击容器窗口),但为了使弹出窗口触发 LostFocus 事件并因此关闭,我必须先单击日历控件上的箭头按钮之一。
<UserControl
x:Class="DropDownExample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
<Grid>
<ToggleButton x:Name="ToggleButton"
ClickMode="Press">Example</ToggleButton>
<Popup x:Name="Popup"
Placement="Bottom"
AllowsTransparency="True"
StaysOpen="False"
PopupAnimation="Slide"
FocusManager.IsFocusScope="false">
<TabControl x:Name="TabControl"
MinHeight="200">
<TabItem>
<Calendar />
</TabItem>
</TabControl>
</Popup>
</Grid>
</UserControl>
Popup 的打开/关闭在 ToggleButton 的 Checked/Unchecked 事件中控制。