Désolé - ma question est presque identique à this one mais étant donné qu'il n'a pas reçu une réponse viable, j'espère que quelqu'un d'autre a des idées nouvelles.WPF TreeView lié à ObservableCollection pas mettre à jour les noeuds racine
J'ai un TreeView WPF qui est lié à une hiérarchie d'un seul type:
public class Entity
{
public string Title { get; set; }
public ObservableCollection<Entity> Children { get; set; }
}
La classe entité implémente INotifyPropertyChanged, mais j'ai omis ce code pour plus de clarté.
Le TreeView est lié à un ObservableCollection < Entité> et chaque instance d'entité expose un ensemble d'instances contenues entité via sa propriété Enfants:
<TreeView ItemsSource="{Binding Path=Entities}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Entity}" ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Title}" />
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
Au départ, le TreeView se fixe comme prévu et affiche correctement un multi-niveaux hiérarchie. En outre, lorsque l'appartenance à l'une des collections enfants est modifiée par programme, les modifications sont correctement répercutées dans TreeView. Cependant, les modifications apportées à l'appartenance du niveau membre ObservableCollection < Entity> ne sont pas reflétées dans TreeView.
Toutes les suggestions seraient appréciées.
Merci, Tim
Merci - une analyse brillante! –
Wow, cela a fonctionné pour moi. Pourquoi ce changement fonctionne-t-il? –
Dans l'exemple @ Mike [Bad], il crée une nouvelle entité, rompant ainsi la liaison à l'original. Dans le [bon] exemple, il est en train d'effacer et d'ajouter des éléments mais en conservant la collection originale. –