Может быть, это поможет:
<ComboBox Name="comboBox1"
DropDownClosed="comboBox1_DropDownClosed"
SelectionChanged="comboBox1_SelectionChanged" />
И ваш код
private bool keepOpen = false;
private void comboBox1_DropDownClosed(object sender, EventArgs e)
{
new Thread(() =>
{
comboBox1.Dispatcher.Invoke(new Action(() =>
{
// do your IF logic here
if (keepOpen)
{
comboBox1.IsDropDownOpen = true;
keepOpen = false;
}
}), null);
}).Start();
}
private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
keepOpen = true;
}
Причина, по которой вам нужен поток, заключается в том, что вы не можете снова открыть выпадающий список в DropDownClosedсобытие, но вы можете сделать это в другой теме.Однако, чтобы обновить controlf в WPF из другого потока, вам нужно вызвать Dispatcher.Приведенный выше код выполняет только то, что вы просили.