2010-06-04 8 views
2

J'ai une page Xaml avec un ListBox databinded et une grille de détail pour créer ou mettre à jour l'élément sélectionné.Comment arrêter l'actualisation automatique d'un objet ListFlash de WPF

Mon Page.DataContext est lié à une table ADO.NET Entity Data Model ("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; 
    } 

Le code XAML du ListBox:

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

Lorsque je sélectionne un élément dans la zone de liste, le détail de la grille affichent automatiquement les informations de l'élément sélectionné

Ici, le "Nom" TextBox qui utilise la liaison de données TwoWay:

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

Lorsque je modifie le TextBox "Non m ", le ListBox est automatiquement mis à jour. Génial ... Mais je n'ai pas appelé la méthode SaveChanges de mon objet SEPDC DataContext ...

Comment puis-je arrêter l'actualisation automatique de ma ListBox jusqu'à ce que j'appelle explicitement la méthode SaveChanges et si possible, sans utiliser la liaison UpdateSourceTrigger = Option explicite?

Cordialement.

Répondre

0

Vous pouvez utiliser deux objets SEPDC (entity data context) distincts. Votre ListBox est lié à un et votre grille de détail à l'autre. Lorsque SelectedValue change dans ListBox, recherchez la même entité dans le contexte de données d'entité de la grille de détail et définissez-la. Après avoir enregistré les modifications du contexte de données d'entité de la grille de détail, actualisez celui du ListBox.

0

J'utilise cette technique, mais je dois recréer le ListBox SEPDC chaque fois que j'actualise le ListBox.

 List<Models.Univers> list; 

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

     universListBox.DataContext = list; 

La méthode Refresh ne fonctionne pas.

Cordialement