WPF:在 TreeViewItem 中正确存储对象

2023-11-26

为了将对象(例如,类的实例)存储在 TreeViewItem 中,我当前将该对象存储在TreeViewItem's Header然后覆盖ToString该类的方法,以便它显示正确的字符串标题;然后我在事件期间将对象投射回来。


这是实现这种事情的正确方法,还是有更好、更合适的方法?


“正确”的方法是添加object to the TreeView's (or TreeViewItem's) Items收集和使用HierarchicalDataTemplate控制项目的渲染方式:

人物.cs:

public class Person
{
    private readonly ICollection<Person> _children = new ObservableCollection<Person>();

    public string Name { get; set; }

    public ICollection<Person> Children
    {
        get
        {
            return _children;
        }
    }
}

Window1.xaml.cs:

public Window1()
{
    InitializeComponent();

    var people = new List<Person>();
    var kent = new Person() { Name = "Kent" };
    kent.Children.Add(new Person() { Name = "Tempany" });
    people.Add(kent);
    _treeView.ItemsSource = people;
}

窗口1.xaml:

<TreeView x:Name="_treeView">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type local:Person}" ItemsSource="{Binding Children}">
            <TextBlock Text="{Binding Name}"/>
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF:在 TreeViewItem 中正确存储对象 的相关文章

  • 如何在 XAML/WPF 中存储和检索多个形状?

    使用 XAML WPF 做一些简单的事情似乎遇到了很多问题 我已经使用矩形和椭圆形等形状创建了一些基于 XAML 的图像来创建我需要应用程序的其他部分使用的图标 但我不能似乎找到了如何做到这一点 我似乎能够在资源字典中存储画布 但无法在任何
  • WindowsFormsHost ZOrder

    看起来 WindowsFormsHost 控件被设置为显示在顶部 有没有办法更改其 z 顺序 以允许同一窗口上的其他 WPF 控件在 WindowsFormsHost 控件之上可见 不幸的是 不能 由于 winformshost 合成到 W
  • WPF:绑定到 ControlTemplate 中的命令

    我正在尝试向自定义 ListView MyListView 添加一个按钮 该按钮会触发 MyListView 中定义的命令 MyCustomCommand 我通过应用 ControlTemplate 添加了按钮 和标题文本 问题是我还没有找
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • Android 在 WPF 中的涟漪效应

    我喜欢 Android 的新动画 当你触摸一个控件 listviewitem 按钮等 时 它会执行如下所示的简洁动画 我想知道如何在全球范围内为 WPF 中的所有 可点击 控件以良好的方式实现这一点 我特别需要帮助的是如何在控件上创建圆圈
  • 命令绑定到 ContextMenu(在 ListBox 中的 ListBoxItem 上)不起作用[重复]

    这个问题在这里已经有答案了 在 WPF 中 借助 MVVM 光 有一个Class 由一些学生组成 以及Class持有一些Students 右键单击一个学生的名字 然后会显示一个MessageBox 这样就可以了 类详细信息视图 xaml
  • Visibility = IsCollapsed 是否跳过数据绑定部分?

    如果我将 StackPanel 或任何绑定区域设置为 折叠 数据会加载吗 它会触发它的 Loaded 事件吗 Yes 您的数据绑定将被评估 您的初始化事件将会触发 并且 您的 Loaded 事件将会触发 但在视觉树的部分中Visibilit
  • WPF Dispatchertimer 延迟反应/冻结

    在我的 WPF 应用程序中 我使用 3 个不同的 DispatcherTimers 一种是用于显示当前时间 一种是每 5 秒运行一次数据库查询 第三个每 1 秒刷新一次自定义按钮的值 当我的程序运行时 有很多延迟 冻结 例如 时间开始正确计
  • 在目标 VS 安装时,VSIX 扩展内部使用的 WPF-Log4Net 未输出日志

    当 Log4net 在 VSIX 扩展中使用并安装在另一个目标 VS 上时 它不会记录日志 我有一个 WPF 解决方案 我下载了 log4net dll 添加了 log4net config 并将 复制到输出目录 值设置为 始终复制 log
  • wpf 中的双显示器双窗口应用程序

    我正在尝试创建一个带有媒体元素的 wpf 视频播放器 我的目标是为该应用程序制作多个窗口 每个窗口将显示在不同的显示器上 就像主窗口将获取主显示器的分辨率并调整自身大小以全屏显示一样 辅助监视器上的第二个窗口等等 到目前为止 我已将主窗口设
  • 如何禁用箭头键更改焦点

    我有一个 WPF 窗口 其中有一些控件 按钮 组框等 和一个大控件Viewport3D在一个Border 视口显示 3D 场景 我希望使用箭头键来移动其相机 问题 方向键总是将焦点改变到另一个UIElement 如何通过箭头键禁用焦点更改并
  • 从 Angular 2 和 Silverlight 应用程序使用相同的 WCF 服务

    目前 我们有一个带有 WCF 服务 后端 的 Silverlight 应用程序 前端 现在 我们将用 Angular 2 应用程序替换 Silverlight 应用程序 而不更改 WCF 服务 只有 UI 会发生变化 在开始使用 Angul
  • WPF 自定义 TabItem - 控件未显示在 Visual Studio 设计器中

    我创建了一个自定义 TabItem 其中包含 DockPanel 和 Button XAML
  • WPF 中可选择的 TextBlock 或带有格式化文本的 TextBox

    我遇到一种情况 我需要显示格式化文本 正常 粗体 突出显示 并且还应该是可选择的 以便用户可以复制文本 我使用了文本块 我可以使用内联内容流元素应用多种格式 但不幸的是它的文本不可选择 虽然文本框允许选择文本并复制到剪贴板 但它不允许我设置
  • wpf中的图像问题(图像不显示)

    我不明白为什么我无法在 WPF 中显示图像 也许我不小心修改了我的资源文件夹 这就是我没有显示的原因 所以我创建了一个新的 wpf 应用程序 我有这个 当我运行该程序时 我的图片显示为 为什么当我尝试在程序中执行相同的操作时 图像没有显示
  • 为什么我的窗口没有被垃圾收集?

    我有一个标准的 CRUD 应用程序 可以处理相当大量的数据 不同的窗口使用 Linq To SQL 访问不同的表 每个窗口本质上都有一个网格 其中的单元格绑定到我正在显示的对象 这是正在发生的事情的一个非常标准的用例 打开窗口A 关闭窗口
  • WPF DataGrid 绑定到 string.Length 而不是字符串文本

    我是 WPF 的新手 并且真诚地尝试自己尽可能多地弄清楚 我已经创建了第一个 DataGrid 控件 并且尝试使用如下字符串列表填充它
  • SpeechSynthesizer 中的持续内存泄漏

    我开发了一个项目 我想发布它使用 c WPF 和 System Speech Synthesizer 对象 阻止该项目发布的问题是 每当调用 SpeakAsync 时 都会留下内存泄漏 并最终导致失败 我相信在使用这个物体后我已经正确清理了
  • 在多个页面上打印流程文档滚动查看器

    我正在尝试打印我的 FlowDocument 它被包装到 FlowDocumentScrollViewer 中 因为我有很多文本 文本框 组合框 并且页面高度可能会变高 我正在使用这个 PrintDialog printDialog new
  • WPF 重用 DataGrid 模板Column DataTemplates

    我构建了一个具有自定义列的数据网格

随机推荐

  • 没有大括号的 JavaScript if 语句的简洁语法

    务实地说 我对我正在寻找的东西有一个快速而肮脏的答案here 但为什么使用它不是一个好主意呢 为什么我找不到它的正式文档 它不是规范和标准的一部分吗 不是得到广泛支持吗 仅仅是因为缩小可能会破坏使用该语法的代码吗 如果您能给我提供有关该功能
  • 如何在AWS S3中上传Image Buffer数据?

    我正在尝试将缓冲区数据从图像上传到 S3 它上传得很好 但是当我尝试在 S3 中下载 查看图像时 它会抛出错误 我尝试过以下方法 我可以使用缓冲区格式 JSON 获取该图像 我无法改变这一点 let image type Buffer da
  • 如何从 Windows 任务管理器(“应用程序”选项卡)获取应用程序及其在 Delphi 硬盘上的位置

    我想获取在 Windows 任务管理器的 应用程序 选项卡 不是 进程 选项卡 中运行和可见的程序列表 并获取它们在 HDD 上的位置 我需要在 Delphi 中完成它 有人可以帮忙吗 据我所知 任务管理器中的 应用程序 选项卡是顶级窗口的
  • 为 DataContractSerializer 预定义 XML 命名空间

    我正在构建一个自托管的 WCF 服务 我正在构建一个特殊的数据结构 以实现非常灵活的数据传输 到目前为止 我测试了我的结构是否可以使用 DataContractSerializer 进行序列化 这工作得很好 我对此很高兴 但有一些事情让我烦
  • 如何将用户定义的对象插入STL集中?

    我正在尝试将对象 Point2D 插入 Point2D 集合中 但我无法做到这一点 该集合似乎适用于 int 和 char 但不适用于对象 我需要帮助来了解如何将对象插入集合中 假设我想按 x 值的升序对它们进行排序 class Point
  • 在 xamarin.ios 中使用 LaunchScreen.storyboard 添加启动图像

    我正在 Xamarin ios 上工作并使用 Visual Studio 进行开发 我添加了 LaunchScreen Storyboard 来显示启动图像 因为我也想瞄准新的 iPhoneX 设备 我当前面临的问题是 我无法在设备或模拟器
  • 如何禁用几行代码的 GCC 警告

    在 Visual C 中 可以使用 pragma warning disable 我还发现在海湾合作委员会你可以覆盖每个文件编译器标志 我该如何为 下一行 执行此操作 或者使用 GCC 在代码区域周围使用推送 弹出语义 看来这个可以做到 我
  • lambda 内的 lambda

    只是为了好奇 几天前发现了 Lambda 我只是想知道是否可以做类似的事情 尝试过解释 但我的尝试似乎都不起作用 p lambda x lambda x x 2 2 没有明确的目的 我只是没有找到满意的答案 我可能误解了 Lambda 您可
  • 使用 DOM 循环遍历“body”标签的所有元素

    html file get contents test html doc new DOMDocument doc gt loadHTML html xpath new DOMXPath doc body xpath gt query bod
  • 图/网络数据结构的 Java API 列表

    有哪些好的 Java API 可将图形 边 节点 用作数据结构 请在本 wiki 的评论中添加对类似 SO 问题的引用 请直接编辑此 wiki 条目中的列表 请添加您添加的项目的摘要描述作为答案 每个答案一个项目 为了我的硕士论文 我在网上
  • 图表中的微笑

    是否有一种方法或包可以将图 或邻接矩阵 转换为 SMILES 字符串 例如 我知道原子是 6 6 7 6 6 6 6 8 C C N C C C C O 邻接矩阵是 0 1 0 0 0 0 0 0 1 0 2 0 0 0 0 1 0 2 0
  • 我创建的类可以自动装箱吗?

    有什么方法可以对我创建的类使用自动装箱吗 例如 我有这个子类Number public class UnsignedInteger extends Number int n public UnsignedInteger int n if n
  • 在活动之间共享域对象

    我已经在域对象中编写了应用程序逻辑 以启用多个用户界面并移植到其他平台 现在正在考虑为用户界面实现活动 考虑到每个活动都需要序列化其状态 确保我的域对象仅序列化一次的最佳方法是什么 如果您正在谈论序列化对象以在活动之间共享它们 您应该创建自
  • 导入项目出现无法解析目标“android-7”

    这个应用程序是我大约一年前完成的 但从未在市场上发布过 我现在尝试在 Eclipse 中打开它 进行一些小的修改并对代码进行一些处理 所以我导入了它 然后发现了这个奇怪的 无法解析目标 错误 它在我所有的 src 文件中突出显示了每个类的红
  • 为什么我无法使用 Type.InvokeMember 检索 out 或 ref 类型的参数值?

    标题很长 但我希望它具体一些 标题确实是个问题 尽管该方法InvokeMember正在呼叫有一个out参数并正在为该参数分配一个值 但我无法获取该值 这是我最初使用的代码 string parameter int result Conver
  • IE9 中的条件样式表

    IE9 应该支持条件注释 我有正确的 MIME 类型 type text css 所有其他条件样式表都被读入正确的浏览器 这是我无法阅读的内容 它与其他部分一起位于 head 中 但在 IE9 中不会出现在 head 中 对于愚蠢的问题感到
  • 使用 Firebase,Swift removeObserver(withHandle 不会删除观察者

    使用 Swift 3 中的removeObserver withHandle 观察者不会在 viewDidDisappear 上删除 var query FIRDatabaseQuery var postRef FIRDatabaseRef
  • Rails:模型实例方法还是辅助方法?

    按照惯例 以下内容应该定义为我的模型的实例方法还是辅助方法 app models user rb class User lt ActiveRecord Base def full name first name last name end
  • 超媒体与 Servicestack 新 API 链接

    我正在评估如何向 DTO 响应添加超媒体链接 虽然没有标准 但将 List 添加到响应 DTO 似乎是建议的方法 您知道使用ServiceStack框架实现的示例或参考吗 添加列表对我来说没问题 但我的疑问是在哪里放置以下链接的逻辑 在服务
  • WPF:在 TreeViewItem 中正确存储对象

    为了将对象 例如 类的实例 存储在 TreeViewItem 中 我当前将该对象存储在TreeViewItem s Header然后覆盖ToString该类的方法 以便它显示正确的字符串标题 然后我在事件期间将对象投射回来 这是实现这种事情