WPF TreeView ObservableCollection 通知示例代码

2024-04-12

我正在尝试编写一个 C# WPF 应用程序,但我被 TreeView 和 ObservableCollection 困住了。

这是我的 TreeView 项目。

| Root
--- SubItem
------ SubItem
| Root
--- SubItem
------ SubItem
---------- SubItem

我正在从其他窗口修改此项目,并且需要更新此树视图而不重新加载所有项目。我进行了搜索,找到了 ObservableCollection。但我无法理解如何使用 ObservableCollection 并通知更改和更新此列表。 您能给我一些示例代码或帮助我做到这一点吗?


这是一个很好的实施示例Simplifying the WPF TreeView by Using the ViewModel Pattern http://blog.clauskonrad.net/2011/04/how-to-make-hierarchical-treeview.html.

这只是另一个样本,

您的型号:

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

您的视图模型:

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;
}

In xaml:

      <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 http://blog.clauskonrad.net/2011/04/how-to-make-hierarchical-treeview.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF TreeView ObservableCollection 通知示例代码 的相关文章

随机推荐

  • 无弹簧流动的弹簧面

    我正在启动一个新的 JSF 2 项目 我意识到纯 JSF 有一些限制 我计划在春季放弃 JSF 是 spring 中相对较新的方法 stackoverflow 中甚至没有标签 spring faces jsp 是经典方法 我需要对技术堆栈进
  • WooCommerce:购物车总计和小计有什么区别?

    我在文档中找不到任何解释 我也查看了源代码 但也没有帮助 非常感谢 好的 我在我的测试商店中通过以下设置找到了它 购物车中产品总价 含税 127 运费 12 费用 应税 13 优惠券折扣 10 通过这些设置 我在购物车对象上得到以下内容 c
  • 保持连接打开并读取数据,直到强行关闭

    当我的活动加载时 我正在连接到网络服务 当我得到服务的响应时 我再次致电服务人员 依此类推 Override protected void onCreate Bundle savedInstanceState callWebMethod C
  • 为 Delphi 应用程序设置帮助

    设置帮助的最佳方式是什么 特别是HTML 帮助 http msdn microsoft com en us library ms670068 VS 85 aspx 对于 Delphi 应用程序 我可以看到几种选择 但它们都有缺点 具体来说
  • iOS 键盘扩展内存崩溃

    我在使用 iOS 键盘扩展时遇到了内存问题 我有一个键盘视图的自定义视图 我将其初始化为loadViewUIInputViewController的 函数 然后将其添加到自我观作为一个孩子 但我有记忆问题 尤其是在 WhatsApp 应用程
  • 如何设置背景的十六进制颜色代码[重复]

    这个问题在这里已经有答案了 可能的重复 如何从十六进制字符串创建 UIColor https stackoverflow com questions 1560081 how can i create a uicolor from a hex
  • 不是 URL 的 URI 示例?

    已经向我解释过很多次了 所有 URL 都是 URI 但并非所有 URI 都是 URL 任何人都可以举一个 URI 但不是 URL 的例子吗 示例盗自here http www pierobon org iis url htm 其中还有差异的
  • 如何在多台远程机器上使用 docker swarm 设置多主机网络

    在问这个问题之前 我已经阅读了很多文章和 stackoverflow 问题 但我无法获得适合我的设置的正确答案 也许它已经得到解答 这是我一直在努力让它发挥作用的架构 我有三台物理机 我想设置具有多主机网络的 Docker swarm 以便
  • 当 void 运算符的计算结果始终为 undefined 时,为什么它会调用 GetValue(expr)?

    JavaScript 中的 void 运算符 http ecma262 5 com ELS5 Section 11 htm Section 11 4 2将调用内部GetValue expr 但总是返回undefined 无论值或表达式是什么
  • 当 UISlider 成为 UIView 其他 self.view 的子视图时,它不会工作

    当我将滑块添加为除 self view 之外的任何视图的子视图时 它不起作用 不滑动 但当它是 self view 的子视图时 它工作正常 您可以在 self view 之外的其他视图上看到它 但它不起作用 这是我的代码 alphaSlid
  • 将服务器端渲染添加到 create-react-app

    我正在研究 create react app 和 SSR 我在这个 repo 中添加了 redux 和 react router gt https github com sarovin StarteKit https github com
  • 无法使用 hist() 函数对齐日期时间对象直方图中的分箱

    所以我试图绘制一些日期时间对象的直方图 但我永远无法让垃圾箱与条形图对齐 我的代码如下 我首先导入我的内容并声明开始 结束和一天对象 import datetime import matplotlib pyplot as plt end d
  • 按距离对邮政编码邻近搜索进行排序(php/mysql)

    我有一个表 用户邮政编码 其中包含用户的邮政编码 纬度和经度 我在 stackoverflow 上找到了一个函数 可以查找特定半径内的邮政编码 function zipcodeRadius lat lon radius global mys
  • (_hidden#919_:0) 崩溃符号文件内

    我正在尝试手动符号化崩溃日志 因为 Xcode 7 不会为我做这件事 然而 我得出了这个结果 这是什么意思 我能用它做什么 我也使用过atos 它只是给了我相同的地址 我确信我有正确的 dSYM app 和日志 Thanks When yo
  • 是什么破坏了 .net 二进制 (dll) 接口

    考虑两个 net dll 首先 application dll 包含主要业务逻辑和数据访问代码 第二个 webservice dll 主要由 WebMethod 组成 这些 WebMethod 链接到 application dll 的对象
  • 如何在 rmarkdown 中格式化 sessionInfo() ?

    如果我想在 R 中很好地打印 PDF 中的 sessionInfo 我可以使用 toLatex sessionInfo 似乎应该有一个类似的选项让 rmarkdown 在 HTML 中呈现 但我在这里或 Rdocumentation 上找不
  • 如何在android中制作水平滚动视图

    我想做这种水平滚动 看图片 gt gt gt gt XML 文件保存在 res layout main xml 我的 main xml 文件有错误吗 我想用
  • 如何在没有 root 权限的情况下创建多分区 SD 磁盘映像?

    是否可以在没有 root 权限 即无环回挂载 的情况下在 linux 中创建完整的 SD 映像 我正在寻找一种自动化嵌入式系统映像创建的方法 该映像应包含特定的分区结构以及格式化为 FAT 和 ext2 的分区 并填充来自构建系统的文件 最
  • 表达式“b=(b-x)&x”是什么意思?

    假设 x 是一个集合 以下代码将遍历集合 x 的子集 int b 0 do process subset b while b b x x 我读到了有关位操作及其如何用于表示集合的读物 表达什么意思b b x x意思是 它是如何工作的 我熟悉
  • WPF TreeView ObservableCollection 通知示例代码

    我正在尝试编写一个 C WPF 应用程序 但我被 TreeView 和 ObservableCollection 困住了 这是我的 TreeView 项目 Root SubItem SubItem Root SubItem SubItem