我有這個組合綁定到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