【发布时间】:2010-08-25 10:41:55
【问题描述】:
我有许多组合框的设置对话框。通常,这些组合框只有一个可选值。因此,为了使对话框更易于使用,我希望 ComboBox 在且仅当 Items.Count == 1 && SelectedItem == null 时自动选择单个值。
我找到了this,但如果可以避免的话,我不想添加额外的依赖项。
我最终创建了一个基于 ComboBox 的 CustomControl,并带有一个覆盖:
public class SmartComboBox : ComboBox
{
public SmartComboBox()
{
}
protected override void OnItemsChanged(
NotifyCollectionChangedEventArgs e)
{
base.OnItemsChanged(e);
if (Items.Count == 1 && SelectedItem == null)
{
SelectedItem = Items[0];
}
}
}
- 是否可以使用触发器/挂钩实现相同的行为?
- 这就是我在扩展 ComboBox 时需要做的全部事情吗?我的意思是,当涉及到样式等时,它会像 ComboBox 一样工作吗(除了这个添加的行为)?
【问题讨论】:
-
SelectedIndex = 0 是更可靠的选择。就我而言,根据我的绑定,SelectedItem 并不总是有效,因为我添加了一个虚拟的“没有可用的项目”项目,但我的“SelectedItem”绑定拒绝了