【发布时间】:2015-03-18 17:49:58
【问题描述】:
我在 ComboBox 项目中使用了 SelectionChanged,但是当我再次选择同一个项目时,SelectionChanged 函数不会触发,我需要它来执行此操作。无论我选择什么女巫,我怎么能告诉它解雇。
private void ComboBox_SelectionChanged4(object sender, SelectionChangedEventArgs e)
{
//do some stuff
}
XAML:
<ComboBox Height="30" Name="Combo4" Style="{StaticResource CategoryComboBox}" SelectionChanged="ComboBox_SelectionChanged4" Grid.ColumnSpan="2" Grid.Column="0">
<ComboBoxItem Content="ComboBox Item 1 (Example)" />
<ComboBoxItem Content="ComboBox Item 2 (Example)" />
<ComboBoxItem Content="ComboBox Item 3 (Example)" />
<ComboBoxItem Content="ComboBox Item 4 (Example)" />
</ComboBox>
添加项目:
for (int i = 0; i < Pr4.Count(); i++)
{
ComboBoxItem item = new ComboBoxItem();
item.Content = Pr4[i];
Combo4.Items.Add(item);
}
【问题讨论】:
-
您能否显示一些代码 - 即,您的视图模型中的属性是什么样的(您是否使用视图模型)等。另外请显示您的 xaml。
-
It doesn't make sense to fire a
SelectionChangedevent when the selection hasn't actually changed.然而,还有其他事件,例如DropDownClosed. -
在内部,如果选择实际更改,ComboBox 只会引发 SelectionChanged 事件,这就是您看不到该事件的原因。正如 Clemens 所说,如果您想记录不是所选项目更改的内容,请使用不同的事件并自己处理。一种可能性可能是在 DropDownOpen 上将所选项目设置为 null,以便在选择某些内容时获得 SelectedItem 更改。
-
Clemens - 请将其发布为答案。 DropDownClosed 工作
-
即使它没有改变,解雇它也很有意义。例如。如果您对组使用相同的组合框,而且对组的项目也使用相同的组合框。