在 WPF 中显示多维数据

2024-03-05

在 WPF 中显示多维数据的最佳方式是什么?直到运行时我才会知道数据的大小/形状。理想情况下,我想使用数据绑定,但这不是严格的要求。我正在考虑某种网格,但我不知道如何动态绑定到数据并让它计算出行数和列数。请提供建议和示例?


听起来好像您想要一个类似 Excel 的界面,用于具有编辑功能的二维数组。对于其他维度,您将必须提供选项卡或一系列组合框。

查看 WPF 工具包 DataGrid。有一个自动生成列的选项。尝试一下。

但是,由于 Datagrid 只能表示 2D 数据,因此您将需要一些隐藏代码来处理其他维度。

Corey

Edit:(04/28/2010) 这是一个可行的解决方案。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Data;
using Microsoft.Windows.Controls;

namespace WpfApplication2
{
    public partial class MainWindow : Window
    {
    public List<List<object>> TheData { get; set; }

    public MainWindow()
    {
        InitializeComponent();

        // Generate some random data
        Random r = new Random();

        TheData = new List<List<object>>
        {
            new List<object> { r.Next(100), r.Next(100), r.Next(100),r.Next(100) },
            new List<object> {  r.Next(100), r.Next(100), r.Next(100),r.Next(100) },
            new List<object> {  r.Next(100), r.Next(100), r.Next(100) },
            new List<object> {  r.Next(100), r.Next(100), r.Next(100),r.Next(100) },
            new List<object> {  r.Next(100), r.Next(100), r.Next(100),r.Next(100) },
            new List<object> {  r.Next(100), r.Next(100), r.Next(100),r.Next(100), r.Next(100) }
        };

        // Now bind data to the grid
        // We need at least one element
        if (TheData.Count > 0)
        {
            // Find the longest row so we create enough columns
            var max = TheData.Max(c => c.Count);

            for (var i = 0; i < max; i++)
            {
                TheGrid.Columns.Add(
                    new DataGridTextColumn
                    {
                        Header = string.Format("Column: {0:00}", i),
                        Binding = new Binding(string.Format("[{0}]", i))
                    }
                    );
            }
        }

        TheGrid.ItemsSource = TheData;
    }
}

}

XAML...

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
    Title="GridTest">
<Grid x:Name="LayoutGrid">
    <toolkit:DataGrid x:Name="TheGrid"
                      AutoGenerateColumns="False"
                      IsReadOnly="False"
                      CanUserAddRows="False"/>
</Grid>

关于这种方法需要注意的一些事情,如果您允许编辑数据并允许锯齿状数组,您将需要在短行上新建一个新列表。

至于 > 2D 数据,您将需要某种选项来选择另一个维度,因为数据网格只能表示 2D 数据。

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

在 WPF 中显示多维数据 的相关文章

随机推荐

  • 当视图可见性为 View.GONE 时,RelativeLayout 出现问题

    I ve a RelativeLayout thus
  • 如何将多个字符串参数传递给 PowerShell 脚本?

    我正在尝试进行一些字符串连接 格式化 但它将所有参数放入第一个占位符中 Code function CreateAppPoolScript string AppPoolName string AppPoolUser string AppPo
  • 获取 JXTreeTable 中单元格的位置

    如何确定 JXTreeTable 中特定单元格在屏幕上的位置 不确定 但合并了一些收集到的有关该主题的信息 此链接显示了计算摆动组件坐标的方法 java中获取组件的坐标 https stackoverflow com questions 4
  • 如何修复 PHP 中 date() 的警告”[重复]

    这个问题在这里已经有答案了 我在winxp上使用XAMPP PHP版本5 3 1 当我尝试在本地主机上调用 time 或 date 函数时 它将显示警告消息 如下所示 严重性 警告 消息 date function date 它是 依赖系统
  • Javascript 点击事件多次触发?

    为什么我的函数运行多次 var s getData settings gender input name gender age input name age init function s this settings this getInp
  • 向导航栏添加类似于 iOS 11 中 Apple Music 的标题和副标题

    这是一IOS 11问题 我不确定我们是否可以谈论这个 iOS 还处于测试阶段 但我在 Apple Music 中查看了这个导航栏 我知道他们推出了大标题IOS 11 navigationController navigationBar pr
  • 如何使用 Cordova/Ionic 在 inappbrowser 中显示 AdMob 横幅

    我在用着ionic framework 我可以创建一个admob横幅 但是当我加载时inappbrowser在我关闭之前 横幅不会显示inappbroswer 有没有办法在以下情况下显示 AdMob 横幅 inappbrowser开了 我建
  • IIS 8.0 详细 500.0 内部服务器错误 - IsapiModule 未找到

    我正在开发一个最初在 Visual Studio 的早期版本 2013 年之前 上构建的项目 但遇到了错误 我在 google 和 stackoverflow 上搜索了又搜索 包括以下资源 IIS 7 5 详细错误 500 0 在 Wind
  • 如何将测试保留在 Vite 项目的源目录之外?

    Running npm init vue latest通过以下设置 生成一个 Vitest 规范文件src目录 我想知道为什么 Cypress e2e 测试有一个单独的目录 而 Vitest 单元测试就在源代码旁边 有什么原因吗 我想将这些
  • 如何通过 API 将资金从 PayPal 帐户转移到另一个 PayPal 帐户

    我花了很长时间寻找一种通过 API 将资金从企业 PayPal 转移到多个用户的 PayPal 帐户的方法 IE 我有收件人的 PayPal 电子邮件地址 我想通过 API 将 X 笔资金从我们的帐户转移到他们的帐户 PayPal 自适应支
  • 如何检查属性是否存在[重复]

    这个问题在这里已经有答案了 我正在尝试从中读取属性DirectoryEntry 不幸的是并非所有记录都有employeeNumber属性 所以我需要检查它是否存在 我已经尝试过 a one DirectoryEntry record a G
  • 退款状态NO_API_ACCESS_TO_RECEIVER,贝宝响应

    我在我的 Rails 应用程序中使用这个 gem 进行支付 https github com jpablobr active paypal adaptive payment https github com jpablobr active
  • Apache mod_auth_form 如何锁定文件夹

    在我看来 我对 mod auth form 应该如何工作有一个根本性的误解 我参考了 Apache 文档的这一页 http httpd apache org docs current mod mod auth form html 我有一个公
  • 不同端口上的 Route 53 记录集

    我是一名 ruby 开发者 刚刚开始学习一些 Node js 我正在运行一个实例AWS主持我的rails带有乘客 nginx 监听的应用程序port 80 现在我想举办一个node js同一实例 t1 micro 上的应用程序并将其监听端口
  • UIViewController 不自动旋转

    正如标题所说 我的 UIViewController 无论如何都不会旋转 当它加载时 shouldAutorotateToInterfaceOrientation 被调用 但之后就不会了 更新1 这是一个非常非常奇怪的问题 至少对于我来说
  • 如何屏蔽nginx日志中POST正文的敏感信息?

    为了方便分析我们保存 request body访问日志中的字段 但是 帖子正文中存在一些敏感信息 例如密码或信用卡号 会在日志中暴露 我们怎样才能掩盖这些信息呢 password 1234asdf gt password 如果我编写一个 n
  • 如果 A 列为空,隐藏 Google 电子表格中的行吗?

    如果 A 列为空 我试图隐藏行 我想将其应用于特定工作表 第 1 周 第 2 周 第 3 周 第 4 周和第 5 周 这是我迄今为止第一周的代码 function ConditionalHideRow var ss SpreadsheetA
  • VSCode 添加随机百分比

    每次我使用终端打印出字符串或任何类型的字符时 它都会自动在每行末尾打印一个 每当我尝试从 C 或 php 打印某些内容时 都会发生这种情况 但还没有尝试过其他语言 我认为这可能是 vscode 的问题 并且不知道它是如何出现的或如何修复它
  • 如何从未签名的存储库安装 debian 软件包

    尝试从未签名的存储库将 Debian 软件包安装到 Debian 9 apt get allow unauthenticated update Get 1 http files freeswitch org repo deb freeswi
  • 在 WPF 中显示多维数据

    在 WPF 中显示多维数据的最佳方式是什么 直到运行时我才会知道数据的大小 形状 理想情况下 我想使用数据绑定 但这不是严格的要求 我正在考虑某种网格 但我不知道如何动态绑定到数据并让它计算出行数和列数 请提供建议和示例 听起来好像您想要一