我将此组合框绑定到了一个linq表。当我在linq表中插入新记录时,有没有一种轻量级的方法来更新界面(显示给用户的组合框值)?
基本上从我的理解来看,我应该使用ObservableCollection,但我不想将数据来回复制到该集合中,我只想在linq表中拥有数据。这是否可能?
编辑:
好的,这是我所做的(但仍然不起作用):
所以,非常简单。
基本上从我的理解来看,我应该使用ObservableCollection,但我不想将数据来回复制到该集合中,我只想在linq表中拥有数据。这是否可能?
编辑:
好的,这是我所做的(但仍然不起作用):
private ObservableCollection<Categories> m_Categories;
private ObservableCollection<Categories> Categories
{
get
{
return m_Categories;
}
}
在XAML中,我有以下内容:
<ComboBox Name="cmbCategory"
ItemsSource="{Binding Categories}"
DisplayMemberPath="Name"
SelectedValuePath="Id"
/>
所以,非常简单。
//if i have a new category, i want to update the combo's content
if (frmEditCategory.ShowDialog() == true)
{
//get the new category and add it to the ObservableCollection
LibraryDataStore.Instance.Categories.ToList().ForEach(p =>
{
if (!m_Categories.Contains(p))
{
m_Categories.Add(p);
}
});
//update the target? is this correct?!
BindingExpression be = cmbCategory.GetBindingExpression(ComboBox.ItemsSourceProperty);
if (be != null)
be.UpdateTarget();
}
通过调试器检查,m_Categories 包含新的类别,但它没有显示在组合框中。
另外,您是否了解有关组合框绑定的任何好的教程或博客文章?...
提前感谢您。