调用ComboBox.Items.Add()添加自定义ComboBoxItem时会触发事件吗?
手动添加ComboBoxItem后,ComboBox的事件触发情况解析
咱们把这两个事件分开拆解来看,触发条件完全不一样:
SelectionChanged事件:这个事件的触发逻辑很明确——只有当ComboBox的选中项发生改变时才会触发。你现在只是把新创建的
ComboBoxItem添加到cbxSelectClan的Items集合里,并没有改动当前选中的项,所以这时候完全不会触发SelectionChanged。只有后续你主动通过代码设置选中这个新项(比如cbxSelectClan.SelectedItem = cbi;),或者用户手动在下拉列表里选中它,这个事件才会被触发。TargetUpdated事件:这个事件是和数据绑定强相关的,而且得你在绑定的时候显式指定
NotifyOnTargetUpdated=True才会生效。如果你只是手动创建ComboBoxItem并添加到Items集合,没有涉及到绑定数据源的更新(比如没修改ItemsSource绑定的集合,也没改动选中项绑定的目标值),那这个事件根本不会触发。只有当绑定的目标属性因为数据源的变化而更新时,它才会被唤起。
额外提一句:如果你一直是直接操作Items集合而不是用ItemsSource做数据绑定,那这类绑定相关的事件(比如TargetUpdated)基本不会因为添加项的操作被触发,因为没有绑定数据源的变化驱动。
内容的提问来源于stack exchange,提问作者Fishezzz
相关产品推荐
相关产品推荐

