WPF ComboBox 一旦失去焦点就不会折叠下拉列表

WPF ComboBox is not collapsing dropdown once it loses focus

我有一个很奇怪的情况。我有 ComboBox,其中装有一些项目。当我单击它时,下拉菜单会展开并显示所有项目。 如果我现在打开另一个应用程序(如记事本),下拉菜单将不会折叠,而我希望发生这种情况。因此,任何重叠的应用程序(例如打开的记事本)将显示为位于承载 ComboBox 的 WPF 和 ComboBox 下拉列表之间,如下面的屏幕截图所示。可能 z 顺序完全错误。

我认为造成这种行为的原因是下拉列表最初没有折叠。我的 ComboBox 是 Usercontrol 的一部分,它的 xaml 就像:

    <ComboBox ItemsSource="{Binding ValueSet}"
              SelectedItem="{Binding SelectedNode}"
              DisplayMemberPath="Name"
              BorderBrush="Green" 
              BorderThickness="1" SelectionChanged="ComboBox_SelectionChanged">
    </ComboBox>

我认为您 xaml 中的 z 顺序没有任何问题。实际问题出在应用程序的 ComboBox 模板中。您应该找到您的 Combo 基于的实际样式(或控件模板),并检查该控件模板内的 Popup(通常命名为 "PART_Popup")控件。 Popup 的 IsOpen 属性 应该绑定到 ComboBox IsDropDownOpened 属性,像这样:

`IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}"`

您应该在 Combo 控件的错误控件模板中以任何方式搜索您的问题的解决方案。有一些东西可以打开它(可能是通过使内部 Popup 控件的 IsOpen 属性 始终为真)。如果您需要更多建议,请告诉我。