[英]Entity Framework & Binding synchronisation
假设我有一个实体:
public class MyObject
{
public string Name { get; set; }
}
我有一个ListBox:
<ListBox x:Name="lbParts">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我将其绑定到代码隐藏的集合中:
ObjectQuery<MyObject> componentQuery = context.MyObjectSet;
Binding b = new Binding();
b.Source = componentQuery;
lbParts.SetBinding(ListBox.ItemsSourceProperty, b);
然后在按钮上单击“我将实体添加到MyObjectSet”:
var myObject = new MyObject { Name = "Test" };
context.AddToMyObjectSet(myObject);
这里是问题-该对象需要在UI中更新到。 但它没有添加到那里:(
ObjectQuery<T>
类未实现INotifyCollectionChanged
接口,因此在添加或删除项目时不会通知UI。 您需要使用ObservableCollection<T>
,它是ObjectQuery<T>
的副本; 将项目添加到ObjectQuery<T>
,还应将其添加到ObservableCollection<T>
。
捆绑 :
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);
BookLibrary示例应用程序正在使用EntityObservableCollection。 这样,您将始终获得更新:WPF和实体框架。
您可以在此处下载示例应用程序: WPF应用程序框架(WAF) 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.