如何在 C# 中将 XML 动态绑定到 WPF DataGrid

2023-11-30

我四处寻找这一点,但我能找到的所有示例都使用了 XAML,这使得解决方案过于静态。这是我想做的:

我想从运行时指定的 XML 文件填充 DataGrid 的列、行和属性。 DataGrid 的属性没有任何内容是可以修复的; XML 将其驱动到最后的细节(因此我看到的 XAML 示例还不够)。

XML 文件的详细信息是开放的,因此任何布局都可以,但作为示例:

<data>
    <row Column="Col 1" Value="100" />
    <row Column="Col 2" Value ="200" />
</data>

将生成一个由 2 列组成的网格,分别名为 Column 和 Value,第 1 行和第 2 行的值分别为 ("Col 1", 100) 和 ("Col 2", 200)。

再说一遍,我对完全不同的 XML 没有任何问题,所以我将采用有效的方法。

这样的东西似乎非常有用,因为它允许在各种领域创建通用数据查看组件。 XML 将为传输结构化数据提供方便的通用格式,而 DataGrid 将提供丰富的查看体验。


感谢所有花时间阅读或回复我的请求的人。我想出了如何做到这一点,并在下面添加了一个代码片段:

using System.Xml.Linq;    // Required for XElement...
using System.Collections; // Required for Hashtable

private void InitGridFromXML(string xmlPath)
{
    var data = XElement.Load(xmlPath);

    // Set Grid data to row nodes (NOTE: grid = DataGrid member)
    var elements = data.Elements("row");
    grid.ItemsSource = elements;

    // Create grid columns from node attributes.  A hashtable ensures
    // only one column per attribute since this iterates through all
    // attributes in all nodes.  This way, the grid can handle nodes with
    // mutually different attribute sets.
    var cols = new Hashtable();
    foreach (var attr in elements.Attributes())
    {
        var col = attr.Name.LocalName;

        // Only add col if it wasn't added before
        if (!cols.Contains(col))
        {
            // Mark col as added
            cols[col] = true;

            // Add a column with the title of the attribute and bind to its
            // value
            grid.Columns.Add(new DataGridTextColumn
            {
                Header = col,
                Binding = new Binding("Attribute[" + col + "].Value")
            });
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中将 XML 动态绑定到 WPF DataGrid 的相关文章

随机推荐

  • 不使用 Object.create 创建具有 null 原型的 javascript 对象

    我需要找到一种方法来创建 JavaScript 对象null原型 我不被允许使用Object create功能 我尝试实例化一个构造函数 例如new Constructor 但返回的对象总是有一个非null原型 即使Constructor
  • Java 8 Stream 将元素添加到列表并求和

    我相信我可以在 listOfPricedObjects 上使用一个流操作来完成下一步 List
  • 使用延长路径安全吗?

    我只是偶然发现本文MSDN 上说路径可以是 259 个字符 NUL 终止符 但是如果您使用 作为前缀 WinAPI 允许您使用 最大总路径长度为 32 767 个字符 渴望看到它工作 我尝试使用资源管理器中的前缀 在 XP SP3 上 但它
  • 稀疏多维数据表示

    我正在开发一种使用 4 维数据的心脏模拟工具 即 3D 空间中位置的多个 3 30 变量 我现在添加一些组织几何体 这将在要模拟的组织之外的包含 3D 框中留下超过 2 3 的点 因此我需要一种有效存储活动点而不是其他点的方法 至关重要的是
  • 在浏览器中打开 Word 文档并进行内联编辑

    可能的重复 您可以在浏览器中对Word文档进行复杂的编辑吗 Hi All 是否有任何免费工具可以允许在浏览器中打开和编辑Word文档 我正在使用 ASP Net 2008 Express IDE Thanks 这个问题的解决方案已经存在 谷
  • 使用 Fabricjs 旋转图像时未更新左上角坐标

    当我在fabricjs中旋转图像时 左上角的坐标在旋转后不会更新 相反 图像的左上角仍然指的是旧点 我认为它应该根据图像的新位置重新计算左上角 有办法实现这一点吗 任何帮助表示赞赏 下面是图像旋转的代码 function rotate ac
  • 如何在system、exec或shell_exec中运行多个命令?

    我正在尝试从 php 运行这样的 shell 命令 ls a grep mydir 但php只使用第一个命令 有没有办法强制 php 将整个字符串传递给 shell 我不关心输出 http www php net manual en fun
  • SQL如何比较两个表中的数据并得到两个表之间不同的结果

    有2张桌子 表a和b A 包含 msisdn 名字 名字 姓氏 regdate 注册数据 表b也有相同的字段 我想比较这两个表 msisdn 名字和姓氏字段 如果表 A 中的 msisdn X 的名字为 jim 姓氏为 halpert 并且
  • Spring过滤器没有被调用

    我在我的应用程序中添加了 CORS 过滤器 但它似乎没有被执行 没有打印 过滤器是这样的 Component public class SimpleCORSFilter extends OncePerRequestFilter Overri
  • Doctrine DQL 动态 ORDER BY 参数

    我尝试将 ORDER BY 列作为 DQL 中的参数传递 如下所示 this gt em gt createQuery SELECT t FROM Entities Topic t ORDER BY order gt setParamete
  • 将选项框的值和键作为参数发送?

    我想在提交表单时发送选项框的值和键 我觉得这应该很简单 但我不确定如何去做 下面是我的表单中的一个片段 用于演示我所引用的内容
  • 我可以获得已安装我的 Tab 应用程序的主页列表吗?

    我曾多次看到类似的问题 但通常是人们试图找出哪个页面当前正在访问他们的选项卡应用程序 您可以通过检查signed request来做到这一点 我正在尝试构建一个 UI 向用户显示他 她是管理员的所有页面 然后显示其中哪些页面已经安装了我的选
  • 为什么 {key:value}["key"] 不起作用?

    1 key value key 2 key value key 我想知道 JS 解释器如何处理上面的代码 以及为什么1不起作用 为什么2 works 我假设您问这个问题是因为您在 JavaScript REPL shell 中看到了这种效果
  • 使用 Eloquent ORM / laravel 准备好的语句

    我是 Laravel 新手 并使用它作为输入查询 DB table user input gt insert array array fname gt Input get Name lname gt no email gt Input ge
  • Blackberry HttpConnection 超时

    在我的 Blackberry 4 5 项目中 我通过 Connector open 创建 HttpConnection 如果我通过 MDS 连接 我可以在 URL 的附加参数中指定 ConnectionTimeout 如果使用直接 TCP
  • .htaccess 重定向锚页面/page#anchor 到 url

    我如何重定向page page anchor to http www example com page page 我尝试了以下代码 但它不起作用 RewriteRule page page anchor http www example c
  • 在python中将多个png合并到一个pdf中

    我想知道是否有一种简单的方法可以在 python 中将多个 png 图像合并到一个 pdf 中 我希望每个图像都是 pdf 中的一页 pypdf 是为此使用的最佳库吗 任何帮助将不胜感激 Thanks from PIL import Ima
  • 将军事时间转换为标准时间(R 中的小时和分钟)

    我有以下一组时间数据 必须将其转换为 12 小时格式 814 830 1835 1730 1442 820 1430 930 1550 1725 1615 1010 1319 1755 820 1955 1850 710 例如 1300 下
  • 禁用Android图像自动旋转

    当我从图库中选择图像并在 ImageView 中显示图像时 某些图像会自动旋转 90 度 我如何禁用此功能 Code Override protected void onCreate Bundle savedInstanceState su
  • 如何在 C# 中将 XML 动态绑定到 WPF DataGrid

    我四处寻找这一点 但我能找到的所有示例都使用了 XAML 这使得解决方案过于静态 这是我想做的 我想从运行时指定的 XML 文件填充 DataGrid 的列 行和属性 DataGrid 的属性没有任何内容是可以修复的 XML 将其驱动到最后