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 通知示例代码 的相关文章

  • 需要帮助处理 Application.xaml 文件中的 DataTemplate 事件

    我的应用程序中有一个包含几个按钮的数据模板 我希望这些按钮的偶数处理程序在当前页面 我在许多页面中使用此模板 而不是在 Application xaml vb cs 文件中触发 因为我希望在每个页面上执行不同的操作 我希望我说清楚了 您可以
  • Visual Studios 2015 中的“恢复 NuGet 包”没有执行任何操作

    我将解决方案从 SVN 拉入 Visual Studios 2015 代码中的一些 使用 引用出现错误 因此我尝试在右键单击 解决方案 中的解决方案时运行 恢复 NuGet 包 选项探索者 这没有任何作用 我必须手动进入 nuget 管理器
  • 无法使用c#更改视频捕获分辨率

    我正在尝试使用 C 中的 DirectShowNet 更改默认网络摄像头分辨率 据我所知 我需要通过调用 windows win32 api dll 中内置的 VideoInfoHeader 类来更改它以进行 avi 捕获 我有来自 Dir
  • 采用 std::vector 或 std::array 的模板函数

    我有一个函数 当前接受 2 个向量 其中可以包含任何普通的旧数据 template
  • 头文件中实现的函数的静态与内联

    我想到的方式inline在 C 中用于链接 作用域 我把它放在同一个篮子里extern and static对于全局对象 通常 对于在头文件中实现的函数 我的首选解决方案是将其设为静态 In Foo h static void foo Do
  • C# 中类似图的实现

    所以我有一个对象 我们称之为 Head 它有一个对象列表 C C1 C2 C3 T T1 T2 和 M M1 M2 并且所有这些都是相互关联的 例如 Head gt C1 C2 C3 T1 T2 M1 M2 T1 gt C1 C2 T2 g
  • C# 中的抽象类和接口类有什么不同?

    C 中的抽象类和接口类有什么不同 An 接口不是类 它只是一个contract定义了public一个类的成员must实施 抽象类只是一个类 您从中可以cannot创建一个实例 通常您会使用它来定义一个基类 该基类定义了一些virtual方法
  • 原子存储抛出错误

    我最近升级到了 C 11 兼容编译器 并且尝试将一些代码从 boost 更新到 c 11 标准 我在使用atomic store转换一些代码时遇到了问题 这是一些简单的测试代码 似乎会引发编译器错误 int main std shared
  • 检查两个函数或成员函数指针的签名是否相等

    我编写了一些代码来检查自由函数的签名是否等于成员函数的签名等 它比较提取的返回类型和函数参数 include
  • 本地时间的内存需要释放吗?

    void log time t current time 0 tm ptm localtime current stuf 只是想确定 我是否需要在方法结束时释放 tm 指针分配的内存 不 你不应该释放它 该结构是静态分配的 检查文档 htt
  • 如果finally 块包含await,为什么*有时*不会在ThreadAbortException 上执行?

    UPDATE 我不认为这个问题是重复的ThreadAbortException最后可以跳过吗 https stackoverflow com questions 18002668 can threadabortexception skip
  • 调试错误:在 vc++ 项目中使用 COM 时发生 所需的运行时?

    我为我的工作创建了一个 COM 组件 我也注册了该组件 在我的系统上 我有两个虚拟机工作站 在我的第一个工作站中 它运行良好 在我的第二个工作站中 它显示一个包含消息的错误框该程序需要一段时间并以不寻常的方式关闭 请联系应用程序管理员 我认
  • 基础设施 - 同步和异步接口和实现? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在实现库 基础设施时 并且该 API 的用户希望同步和异步使用代码 我读到混合同步和异步并不是一个好主意 例如 同步实现包括等待异步实现 显然
  • Unity - 在生成时获取随机颜色

    我有一个小问题 我想在我的场景中生成四边形 它们都应该有红色或绿色作为材质 但 Random Range 函数只能是 int 我该如何解决它 void SpawningSquadsRnd rndColor 0 Color red rndCo
  • C# PasswordDeriveBytes:似乎 Salt 并不重要

    可能我误解了什么 以下代码通过 CryptDeriveKey 使用两种不同的盐生成两个相等的密钥 这是控制台结果 盐1 21 3e 18 a3 9a 8b 5f gt 键 da 89 ea 3d 91 08 20 98 20 e9 dc 4
  • 强制函数调用的顺序?

    假设我有一个抽象基类 并且我想要一个必须由派生类实现的纯虚方法 但我想确保派生方法以特定顺序调用函数 我可以做什么来强制执行它 I E base class virtual void doABC 0 virtual void A 0 vir
  • Asp.Net Core 中的 SSL 不起作用

    我从 Visual Studio 创建了一个简单的 Web 应用程序Web Application Net Core 具有个人用户帐户授权的模板 然后 我启用了 SSLProject gt MyProject Properties 将带有
  • 如何通过API退出Win32应用程序?

    我有一个使用 Win32 API 编写的 C Win32 应用程序 我希望强制它在其中一个函数中退出 有没有类似的东西Exit or Destroy or Abort 类似的东西会终止它吗 哎呀呀呀呀呀呀 不要做任何这些事情 exit 和
  • 创建进程默认浏览器

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 我想获取线程 id 因此 ShellExecute 无法获取线程 id 因此我开始使用
  • 如何根据当前日期时间发现财政年度?

    我需要基于当前或今天的日期时间的财政年度 假设我们认为今天的日期是10 April 2011 那么我需要输出为Financial Year 2012在某些情况下 我需要以短格式显示相同的输出FY12 我想以两种方式显示 在我们的要求中 考虑

随机推荐

  • 无弹簧流动的弹簧面

    我正在启动一个新的 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