当从列表中选择特殊项目时,我需要重新打开组合框列表。在这段代码中,我假设当选择一个项目时,组合列表将重新打开。它可以使用键盘,但我的鼠标有问题。
private void cbPredefinedReports_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
cbPredefinedReports.IsDropDownOpen = true;
}
当用户点击某个项目时,如何再次删除列表?
答案 0 :(得分:1)
也许这会有所帮助:
<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事件中重新打开组合框,但您可以在另一个线程中执行此操作。但是,要从另一个线程更新WPF中的controlf,您需要调用Dispatcher。上面的代码完全符合您的要求。