Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 实体框架及;绑定同步_Wpf_Entity Framework_Data Binding - Fatal编程技术网

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);