WPF ComboBox не сворачивается выпадающий после потери фокуса

У меня очень странная ситуация. У меня есть ComboBox, который загружен с некоторыми элементами. Когда я нажимаю на него, раскрывающийся список раскрывает все элементы. Если я сейчас открою другое приложение, такое как "Блокнот", выпадающий список не рухнет, как я ожидаю. В результате любое перекрывающееся приложение, такое как открытый Блокнот, будет отображаться как находящееся между WPF, на котором размещен ComboBox, и раскрывающимся списком ComboBox, как на скриншоте ниже. Вероятно, z-порядок как-то совершенно неверен.

Я считаю, что причиной такого поведения является тот факт, что выпадающий не рухнул в первую очередь. Мой ComboBox является частью Usercontrol, и его xaml выглядит так:

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

1 ответ

Решение

На мой взгляд, в вашем xaml нет проблем с z-порядком. Актуальная проблема в шаблоне ComboBox в вашем приложении. Вы должны найти фактический стиль (или шаблон элемента управления), на котором основана ваша Combo, и проверить элемент управления Popup(обычно называемый "PART_Popup") внутри этого шаблона элемента управления. Свойство IsOpen всплывающего окна должно быть связано со свойством ComboBox IsDropDownOpened, например:

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

В любом случае вам следует искать решение вашей проблемы в неверном шаблоне элемента управления Combo. Есть что-то, что заставляет его открываться (возможно, делая свойство IsOpen внутреннего элемента управления Popup всегда истинным). Дайте мне знать, если вам нужно больше предложений.

Другие вопросы по тегам