我正在尝试创建一个包含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/

10-17 01:15