我有这个组合绑定到linq表。 当我在linq表中插入一条新记录时,是否有轻量级的方法来更新UI(显示给用户的组合值)?WPF数据绑定到System.Data.Linq.Table <T>,如何更新界面?
基本上从我了解我应该使用一个ObservableCollection,但我不希望将数据&描述了从LINQ的表复制回该集合,我只希望有在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包含新类别,但它不显示在组合中。
而且,你知道有关组合结合任何好的教程或博客帖子?...
预先感谢您
是的,你是正确的,现在我正在尝试使用ObservableCollection。 – Teodor 2009-08-21 08:20:38
...它的工作原理并不难实现。 – Teodor 2009-08-21 10:45:27