如何停止在Entity Framework对象上自动刷新WPF ListBox Databind

时间:2010-06-04 15:52:45

标签: wpf entity-framework listbox refresh

我有一个带有Databinded ListBox的Xaml页面和一个用于创建或更新所选元素的详细网格。

My Page.DataContext绑定在ADO.NET实体数据模型表(“Univers”)上。

    private void Page_Loaded(object sender, RoutedEventArgs e)
    {
        SEPDC = new Models.SEP();

        universViewSource = new CollectionViewSource();
        universViewSource.Source = SEPDC.Univers.Execute(System.Data.Objects.MergeOption.AppendOnly);

        DataContext = universViewSource;
    }

ListBox的Xaml代码:

<ListBox DisplayMemberPath="Nom" ItemsSource="{Binding}" Name="universListBox" SelectedValuePath="IdUnivers"/>

当我在ListBox中选择一个元素时,网格细节会自动显示所选元素的信息

这里的“Nom”TextBox女巫使用TwoWay数据绑定:

<TextBox Name="nomTextBox" Text="{Binding Path=Nom, Mode=TwoWay}" />

当我修改TextBox“Nom”时,ListBox会自动更新。太棒了...但我没有调用我的SEPDC DataContext对象的SaveChanges方法...

如何在显式调用SaveChanges方法之前停止自动刷新ListBox,如果可能的话,不使用Binding UpdateSourceTrigger = Explicit选项?

问候。

2 个答案:

答案 0 :(得分:0)

您可以使用两个单独的实体数据上下文(SEPDC)对象。您的ListBox绑定到另一个和您的详细网格。当ListBox中的SelectedValue发生更改时,在详细信息网格的实体数据上下文中找到相同的实体并进行设置。从详细信息网格的实体数据上下文保存更改后,刷新ListBox的更改。

答案 1 :(得分:0)

我使用这种技术但每次刷新ListBox时都必须重新创建ListBox SEPDC。

        List<Models.Univers> list;

        using (Models.SEP dc = new Models.SEP())
            list = dc.Univers.Execute(System.Data.Objects.MergeOption.AppendOnly).ToList();

        universListBox.DataContext = list;

Refresh方法不起作用。

此致