【发布时间】:2015-05-05 16:58:09
【问题描述】:
我有一个组合框
<ComboBox ItemsSource="{Binding MyItems}"
DisplayMemberPath="DisplayedName"
SelectedValue="{Binding MySelectedItem}"/>
奇怪的是,当我打开组合框时,最后一个位置有一个空白的空项目。这是为什么?最后一个空条目也是可选择的。我绑定的集合不包含空条目。它包含例如4 个项目,但组合框有 5 个。
编辑:
我的 ViewModel 中的属性:
public ObservableCollection<MyItem> MyItems { get; set; }
private MyItem mySelectedItem { get; set; }
public MyItem MySelectedItem {
get { return mySelectedItem }
set {
mySelectedItem = value;
RaisePropertyChanged(() => MySelectedItem);
}
}
我将MyItems 设置为可用项目的集合:
MyItems = AvailableItems();
...
public ObservableCollection<MyItem> AvailableItems()
{
return new ObservableCollection<MyItem>()
{
new MyItem() {DisplayedName = "ItemNameIMadeUp1"},
new MyItem() {DisplayedName = "ItemNameIMadeUp2"}
};
}
我将某个项目定义为选定项目:
MySelectedItem = MyItems[0];
EDIT2 我发现“空”项目是 NewItemPlaceholder。我还没有发现如何删除它,甚至为什么将它添加到 ObservableCollection 中:o(
【问题讨论】:
-
考虑展示收藏代码
-
一个 ObservableCollection 没有 SelectedItem 属性,那么您希望
{Binding MyItems.SelectedItem}提供什么? -
我在 ObservableCollection 绑定到数据网格时发生了这种情况,并且框架添加了新的项目占位符。然后将相同的 ObservableCollection 绑定到组合框也确实在底部显示了空项。
-
@Clemens,你是对的,当然,我应该复制并粘贴代码。我已经纠正了错字。
-
您是否尝试使用
selectedIndex=0而不是 selectedValue?我没有得到占位符然后我做到了