WPFTreeView ObservableCollection通知样本代码

问题描述 投票:0回答:1
| Root --- SubItem ------ SubItem | Root --- SubItem ------ SubItem ---------- SubItem

我从其他窗口修改了此项目,我需要在不重新加载所有项目的情况下更新此treeview。我已经进行了搜索,发现了观察力。但是我不明白如何使用ObservableCollection并通知更改并更新此列表。 你能给我一些示例代码或帮助我这样做吗?

这里是实施
Simplifying the WPF TreeView by Using the ViewModel Pattern

的一个很好的例子。
c# wpf treeview observablecollection
1个回答
1
投票
您的模型:

public interface IFolder { string FullPath { get; } string FolderLabel { get; } ObservableCollection<IFolder> Folders { get; } }

您的ViewModel:

class ViewModel : INotifyPropertyChanged { public ViewModel() { m_folders = new ObservableCollection<IFolder>(); //add Root items Folders.Add(new Folder { FolderLabel = "Dummy1", FullPath = @"C:\dummy1" }); Folders.Add(new Folder { FolderLabel = "Dummy2", FullPath = @"C:\dummy2" }); Folders.Add(new Folder { FolderLabel = "Dummy3", FullPath = @"C:\dummy3" }); Folders.Add(new Folder { FolderLabel = "Dummy4", FullPath = @"C:\dummy4" }); //add sub items Folders[0].Folders.Add(new Folder { FolderLabel = "Dummy11", FullPath = @"C:\dummy11" }); Folders[0].Folders.Add(new Folder { FolderLabel = "Dummy12", FullPath = @"C:\dummy12" }); Folders[0].Folders.Add(new Folder { FolderLabel = "Dummy13", FullPath = @"C:\dummy13" }); Folders[0].Folders.Add(new Folder { FolderLabel = "Dummy14", FullPath = @"C:\dummy14" }); } public string TEST { get; set; } private ObservableCollection<IFolder> m_folders; public ObservableCollection<IFolder> Folders { get { return m_folders; } set { m_folders = value; NotifiyPropertyChanged("Folders"); } } void NotifiyPropertyChanged(string property) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(property)); } public event PropertyChangedEventHandler PropertyChanged; }

INXAML:

<TextBlock Text="Simple root binding" Foreground="Red" Margin="10,10,0,0" /> <TreeView ItemsSource="{Binding Folders}" Margin="10"> <TreeView.ItemTemplate> <DataTemplate> <TreeViewItem Header="{Binding FolderLabel}"/> </DataTemplate> </TreeView.ItemTemplate> </TreeView>

Full code


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.