我在我的 WP8 应用程序中使用 LINQ/SQL 来管理列表框中显示的项目集合。有时,这些对象中的一个被使用另一个 DataContext 的长时间运行的操作更改。这些更改可能是 CRUD 操作之一,因此也可以在后台创建对象。
在 iOS 中有 NSFetchedResultsController 或者我可以使用 NSNotification - 我正在寻找类似的东西。
为更新案例更新一些代码
我正在拿我的物品是这样的:
void loadData() {
var items = from r in itemDB.items orderby r.UpdatedAt descending select r;
var Items = new ObservableCollection<Item>(items);
lstData.ItemsSource = Items;
}
我的列表框看起来像这样
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="10" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBox Text="{Binding LocalState}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我的背景代码如下所示:
static public void UploadAll() {
ThreadPool.SetMaxThreads(1,1);
ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc));
}
static void ThreadProc(Object stateInfo)
{
ItemsContext itemsDB = new ItemsContext(ItemsContext.DBConnectionString);
var notUploadedItems = (from i in itemsDB.items
where !i.LocalState.Equals("server")
select i);
var Items = new ObservableCollection<Item>(notUploadedItems);
foreach (Item a in Items)
{
a.Save(() =>
{
Deployment.Current.Dispatcher.BeginInvoke(delegate
{
a.LocalState = "server";
itemsDB.SubmitChanges();
});
//NOW THE LISTBOX SHOULD BE UPDATED
}, (err) =>
{
});
}
}
在//NOW THE LISTBOX SHOULD BE UPDATED
评论处,应更新相应的列表框模板
添加/删除案例类似。
干杯。