我有一个带有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选项?
问候。
答案 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方法不起作用。
此致