如何构建具有未知列数的 WPF 数据网格

2024-01-10

我需要从 txt 中获取的字符串数组集合构建并显示 WPF 数据网格。问题是我不知道先验的列数,即单个数组中的项目数。所以我在我的xaml中定义<DataGrid Grid.Row="2" ItemsSource="{Binding Path=Rows}" />

我试图将其填充到我的视图模型中,但我不能简单地将我的数组集合(可观察集合)作为项目源,因为数据网格将仅显示空白行。

我还可以在 Observable 集合上使用其他方法,因为我用相同的方法生成数组

这是我的可观察集合:

ObservableCollection<string[]> Rows = new ObservableCollection<string[]>;

在这个方法中我填充了集合

foreach(ListViewItem item in wsettings.lista)
        {                 
            TextBlock line = item.Content as TextBlock;
            string txt = line.Text;
            string[] x = txt.Split(stringSeparators, StringSplitOptions.None);               
            Rows.Add(x);
        }    

请不要介意分裂前的第一部分。我从我之前使用过的文本块列表视图中获取数据(我有我的理由)。

EDIT1:使代码更具可读性

EDIT2:标题必须是用户必须设置的组合框


DataTable class https://msdn.microsoft.com/en-us/library/system.data.datatable(v=vs.110).aspx在.Net中。它的主要目的是与关系数据库通信,但它可以很好地用于存储、显示和编辑表格数据(例如读取和显示 .csv/Excel 文件 ->DataTable + DataGrid在 wpf 中,DataTable + DataGridView在 WinForms 中)。

可以在运行时添加/删除 DataTable 列 (DataColumn),并且 DataGrid 使用标题的 Name 属性自动为其生成列 (DataGridColumn)(默认启用)。 DataTable 还支持开箱即用的排序和过滤。

注意:DataGrid 不清除Columns当分配新的 ItemsSource 时。因此,可以有一些预定义的列并使用自动生成。

注意:DataGrid 创建DataGridTextColumn默认为 s。如果需要更复杂的模板,可以通过以下方式拦截该过程AutoGeneratingColumn event (参见示例 https://stackoverflow.com/questions/40358111/datagrid-shows-path-of-image-instead-of-image-itself)

这是一个例子:

code

public class MyViewModel
{
    public DataTable Test { get; set; }
}

public MyWindow()
{
    InitializeComponent();
    var vm = new MyViewModel
                {
                    Test = new DataTable
                        {
                            Columns = {"A", "B", "C"}
                        }
                };            
    this.DataContext = vm;

}

xaml

<DataGrid AutoGenerateColumns="True"
          ItemsSource="{Binding Path=Test.DefaultView}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="#"/>
    </DataGrid.Columns>
</DataGrid>

结果(我输入了一些值)

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

如何构建具有未知列数的 WPF 数据网格 的相关文章

随机推荐

  • Xdebug 无法连接远程服务器

    我希望使用不同计算机的团队能够在同一台计算机上调试 PHPremote服务器 但我很难让 Xdebug 在 NetBeans 7 0 1 中工作 我尝试了很多网上的建议 但没有效果 作为记录 我已经成功安装了 Xdebuglocally在运
  • 将 scipy 对象保存到文件

    我想保存对象interpolator产生自scipy interpolate InterpolatedUnivariateSpline到一个文件 以便随后加载并使用它 这是控制台上的结果 gt gt gt interpolator
  • 弹出到 expokit 时,Expo 卡在“配置同步”上

    当尝试从 expokit 中弹出项目时 它不会完成并卡在config syncing一个多小时 当我用 expo 创建一个新项目然后运行时也会发生这种情况expo run android 我解决了下面的步骤 删除文件以获得新的感觉 rm r
  • 字符串值中的 Coder 是什么?

    我正在读取 CSV 文件 方法是使用com opencsv CSVReader像下面这样 String headers csvReader readNext 标题的值如下屏幕截图所示 这里的编码器是什么 以黄色突出显示 为什么第一个索引的值
  • 在与 ActiveSync 同步的同时读取 PDA 目录的内容

    我有一个项目 需要复制 PDA 中找到的文件 就我而言 如果这有什么区别的话 它是 MC3000 我安装了 ActiveSync 它为我创建了同步文件夹 效果很好 但是 我希望不仅能够在其 MyDocument 文件夹中读取 PDA 的内容
  • 如何处理选项卡更改时的 CSS 动画

    我正在开发一个小轮盘游戏 例如 https csgofast com https csgofast com 我的问题是 当我在实际选项卡中时 与变换和过渡一起使用的轮盘动画效果很好 问题是 当我移动到另一个选项卡或最小化时 在轮盘赌开始之前
  • 在 Web Api 控制器中将 JSON 反序列化为字典

    我有这样的 JSON 字符串 1 1 3 5 2 2 5 6 3 5 6 8 我想将其发送到 Web Api 控制器而不使用 ajax 请求进行更改 ajax type POST url Api Serialize Dict data JS
  • 设置HBase、hadoop、hive通过hive访问Hbase的正确方法是什么?

    我在配置和安装 hbase hadoop hive 时遇到问题 到目前为止我在 ubuntu 14 04 3 LTS 的虚拟机上做了什么 像这样安装了jdk和版本jdk1 8 0 60 https askubuntu com questio
  • 根据 textContent 中的索引突出显示文本

    Bounty 正如 jsPerf 所展示的 测试时最新发布版本的 Firefox Chrome 和 Internet Explorer 中最快的解决方案将获得奖励or创建此类解决方案最有用的答案由我自行决定 哇哈哈 I ll be most
  • 卸载后执行命令

    我需要卸载才能运行命令after它删除了已安装的文件 UninstallRun 没有用 据我所知 它在文件被删除之前运行 我有点需要一个 卸载后 标志 关于我如何实现上述目标有什么建议吗 See 卸载事件函数 http www jrsoft
  • 包含过期项的哈希表

    我想实施一个HashTable 或者也许是一个HashSet or Dictionary 其中有独特的成员 一段时间后就会过期 例如 Items expire automatically after 10 seconds Expiratio
  • Celery:WorkerLostError:工作人员过早退出:信号 9 (SIGKILL)

    我在 Django 应用程序 在 Elastic Beanstalk 上 中使用 Celery 和 RabbitMQ 来管理后台任务 并使用 Supervisor 对其进行守护进程 现在的问题是 我定义的周期任务之一失败 在正常工作一周后
  • 7u45 webstart 中出现新的死锁错误?

    java 7u45 的乐趣仍在继续 这次是 webstart 内部陷入僵局 这种情况在启动大型应用程序 约 100 个 jar 时非常一致地 每次 发生 还有其他人遇到过这个问题或知道任何解决方法吗 除了恢复到 1 7 0 40 之外 Th
  • Jekyll 自动目录

    我已经建立了一个基于 Jekyll 代码的网站阿帕奇构建者 http buildr apache org Buildr 网站根据标题中的标题自动为每个页面生成一个目录 textile格式文件 例如 您使用纺织品编写一个页面 标记出标题 如下
  • zftool 的行为不符合预期

    我在 Linux 中有一个托管服务 我正在尝试在 zend Framework 2 上开发一个应用程序 我想使用 zftool 但无论我运行哪个 zftool 命令 我总是得到主页的 HTML 我将非常感谢任何帮助 以下是重现步骤 1 我安
  • 以角度 2 实现旋转器

    我尝试在我的应用程序中使用微调器 因为有大量数据需要时间来加载 但这是问题所在 我已将此链接作为参考 Angular2 的预引导加载屏幕 https stackoverflow com questions 35243443 pre boot
  • C++ 中的引用计数究竟意味着什么?

    到底什么是引用计数 特别是对于 C 来说它是什么 如果我们不处理这些问题 我们可能会面临哪些问题 所有语言都需要引用计数吗 到底什么是引用计数 特别是对于 C 来说它是什么 简单来说 引用计数就是对某个对象的引用进行计数 通常 C 采用以下
  • 如何将 vim 选项的值复制到寄存器

    在 vim 中你可以设置选项 set 例如 设置咒语 启用拼写控制 和 设置拼写文件 home custom spell txt 设置自定义拼写文件的位置 您可以使用 echo 打印选项的值 例如 回声 拼写文件 现在我想将选项拼写文件的值
  • Ubuntu下Visual Studio Code显示错误

    我的 Visual Studio Code 遇到了好几天的问题 无法启动它 事实上 窗口几乎全黑 这是我从终端启动它时的控制台输出 bash impossible de r gler le groupe de processus du te
  • 如何构建具有未知列数的 WPF 数据网格

    我需要从 txt 中获取的字符串数组集合构建并显示 WPF 数据网格 问题是我不知道先验的列数 即单个数组中的项目数 所以我在我的xaml中定义