【发布时间】:2010-08-31 09:55:43
【问题描述】:
我在代码隐藏文件中有一个 ObservableCollection<ClassName> 类型的公共属性,我已将它绑定到 Combobox 的 ItemsSource 属性。
<ComboBox Height="23"
Margin="82,34,71,0"
Name="comboBox1"
VerticalAlignment="Top"
ItemsSource="{Binding Path=Collection}"
DisplayMemberPath="Name" />
在我在表单加载时填充此集合后,所有项目都会显示,我向下滚动到最后一个元素并选择它。
现在,我单击一个按钮,它将向集合中添加另一个项目,我想将光标设置到列表的开头。为此,我尝试了以下代码,
private void button1_Click(object sender, RoutedEventArgs e)
{
Collection.Add(new TempObject() { Name = "new item" });
comboBox1.SelectedIndex = -1;
}
这样做不会将滚动条设置到列表的开头。我尝试清除列表并再次填充它,但它仍然不起作用。
请帮忙....
应用 BringIntoView 后:
private void button1_Click(object sender, RoutedEventArgs e)
{
Collection.Clear();
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
Collection.Add(new TempObject() { Name = "testItem" });
comboBox1.SelectedIndex = -1;
ComboBoxItem item = comboBox1.ItemContainerGenerator.ContainerFromIndex(0)
as ComboBoxItem;
if (item != null) item.BringIntoView();
}
这将始终为 ComboBoxItem 项返回 null。
【问题讨论】: