Wpf 实体框架及;绑定同步
假设我有一个实体:Wpf 实体框架及;绑定同步,wpf,entity-framework,data-binding,Wpf,Entity Framework,Data Binding,假设我有一个实体: public class MyObject { public string Name { get; set; } } 我有一个列表框: <ListBox x:Name="lbParts"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Name}"/> </DataTe
public class MyObject
{
public string Name { get; set; }
}
我有一个列表框:
<ListBox x:Name="lbParts">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这里是问题所在-此对象需要在UI中更新,以便更新。但这里没有添加:(ObjectQuery类没有实现INotifyCollectionChanged
接口,因此在添加或删除项目时不会通知UI。您需要使用ObservableCollection
作为ObjectQuery
的副本;当您将项目添加到ObjectQuery
时,也要将其添加到可观测采集
绑定:
private ObservableCollection<MyObject> _myObjects;
...
_myObjects = new ObservableCollection(context.MyObjectSet);
Binding b = new Binding();
b.Source = _myObjects;
lbParts.SetBinding(ListBox.ItemsSourceProperty, b);
BookLibrary示例应用程序正在使用EntityObservableCollection。通过这种方式,您可以始终更新两个世界:WPF和EntityFramework 您可以在此处下载示例应用程序:请参阅
var myObject = new MyObject { Name = "Test" };
context.AddToMyObjectSet(myObject);
private ObservableCollection<MyObject> _myObjects;
...
_myObjects = new ObservableCollection(context.MyObjectSet);
Binding b = new Binding();
b.Source = _myObjects;
lbParts.SetBinding(ListBox.ItemsSourceProperty, b);
var myObject = new MyObject { Name = "Test" };
context.AddToMyObjectSet(myObject);
_myObjects.Add(myObject);