我正在尝试创建一个包含ToggleButton和带有TabControl的Popup控件的下拉控件。我的问题是,除非我单击弹出窗口中的某个控件,否则弹出窗口不会自动关闭。
考虑下面的示例,其中的弹出窗口包含一个TabControl,该控件本身包含一个TabItem内的Calendar控件。
预期的行为是,当弹出窗口失去焦点时即会关闭(即单击容器窗口),但是为了使弹出窗口触发LostFocus事件并因此关闭,我必须首先单击Calendar控件上的箭头按钮之一。
<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>
在ToggleButton的Checked/Unchecked事件中控制弹出窗口的打开/关闭。
最佳答案
问题在于ClickMode = Press。设置ClickMode = Release可以解决此问题,并且Popup在失去焦点时会关闭。
关于wpf - 直到我单击其中的控件,弹出窗 Eloquent 会失去焦点并关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16316139/