下午好,
我试图在WPF中使用Linq to SQL datacontext作为ListBox。
基本上,我将Linq DataContext分配给表单的DataContext属性。然后,我将它绑定到list.ItemsSource。
一切正常,我可以在文本框中显示每个元素的详细信息(主 - 详细信息方案)。
问题是,我希望能够在列表中添加一个新元素:
private void Button_Click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
var table = lst_markets.ItemsSource as System.Data.Linq.Table<Market>;
table.InsertOnSubmit(new Market() { IdMarket = Guid.NewGuid(), Name = txt_newmarket.Text });
table.Context.SubmitChanges();
}
该值确实已添加到数据库中,但ListBox未刷新。
我该怎么做才能更新清单?
谢谢,
雷米
答案 0 :(得分:2)
Table<TEntity>
未实现INotifyCollectionChanged
,因此绑定管理器不会收到有关集合内容已更改的通知。
为您提供的一些选择:
ObservableCollection
,并保持同步。当您从中添加/删除项目时,列表将通过绑定保持同步。 See this article类似的东西Table<T>
不是集合 - 它表示查询。而是绑定到集合。如果我没记错的话,每次迭代一个表时,它都会查询数据库,这意味着只要列表框感觉需要枚举,或者绑定管理器,或者你的ui代码都是相同的,你就会访问数据库。