Spiacente: la mia domanda è quasi identica a this one ma poiché non ha ricevuto una risposta valida, spero che qualcun altro abbia delle idee nuove.WPF TreeView associato a ObservableCollection che non aggiorna i nodi root
Ho un TreeView WPF che si associa ad una gerarchia di un singolo tipo:
public class Entity
{
public string Title { get; set; }
public ObservableCollection<Entity> Children { get; set; }
}
La classe Entity implementa INotifyPropertyChanged, ma hanno omesso questo codice per chiarezza.
La TreeView è associato a un ObservableCollection < Entity> e ogni istanza Entità espone un insieme di istanze di entità contenute attraverso la proprietà Bambini:
<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>
Inizialmente TreeView lega come previsto e visualizza correttamente un multi-livello gerarchia. Inoltre, quando l'appartenenza a uno degli insiemi Children viene modificata a livello di codice, le modifiche si riflettono correttamente in TreeView.
Tuttavia, le modifiche all'appartenenza al livello membro radice ObservableCollection < Entity> non si riflettono in TreeView.
Qualsiasi suggerimento sarebbe apprezzato.
Grazie, Tim
Grazie - una brillante analisi! –
Wow, questo ha funzionato per me. Perché funziona questa modifica? –
@Mike Nell'esempio [Bad] sta creando una nuova entità, rompendo così il legame con l'originale. Nell'esempio [buono] sta solo cancellando e aggiungendo oggetti ma mantenendo la collezione originale. –