【发布时间】:2014-03-21 14:43:06
【问题描述】:
我有一个自动从 ObservableCollection 获取元素的组合框。如果用户通过按钮单击添加元素到集合中。将项目及其名称添加到组合框(数据绑定)。如何实现所选索引自动转到集合中的新项目?
【问题讨论】:
-
请添加一些代码向我们展示您的尝试。
标签: c# data-binding combobox
我有一个自动从 ObservableCollection 获取元素的组合框。如果用户通过按钮单击添加元素到集合中。将项目及其名称添加到组合框(数据绑定)。如何实现所选索引自动转到集合中的新项目?
【问题讨论】:
标签: c# data-binding combobox
在您的 ViewModel 中公开一个SelectedItem 属性以及ObservableCollection,然后将ComboBox.SelectedItem 绑定到它。
然后,您可以在添加的同时将 SelectedItem 设置为 ViewModel 中新添加的项目。
你没有提到你是在使用 MVVM 还是 codebehind,但基本上它会是这样的:
XAML:
<ComboBox ItemsSource={Binding MyCollection}, SelectedItem={Binding MySelectedItem} />
按钮点击代码(在视图模型中)
var element = new MyElement();
MyCollection.Add(element);
MySelectedItem = element;
这仅在您使用带有 INotifyPropertyChanged 的视图模型时才有效,因为组合需要知道 MySelectedItem 何时更改。
【讨论】:
您可以绑定组合框的“SelectedIndex”属性,当您添加项目时,您只需像这样更新此值:
ObservableCollection<Item> list = new ObservableCollection<Item>();
IndexC = list.Count() - 1;
然后你绑定在 IndexC 上。
【讨论】: