Выпадающий список со списком автоматически при выборе мышью - PullRequest
0 голосов
/ 22 декабря 2011

Мне нужно заново открыть список выпадающих списков, когда из списка выбран специальный элемент. В этом коде я предполагаю, что комбинированный список будет вновь открыт, когда выбран элемент. Это работает, если вы используете клавиатуру, но у меня проблема с мышью.

        private void cbPredefinedReports_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            cbPredefinedReports.IsDropDownOpen = true;
        }

Как я могу удалить список снова, когда пользователь щелкает элемент?

1 Ответ

1 голос
/ 22 декабря 2011

Может быть, это поможет:

    <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.Приведенный выше код выполняет только то, что вы просили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...