簡體   English   中英

實體框架和綁定同步

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM