为什么纯 IEnumerable 的内容对于 WPF DataGrid 是不可见的?

2023-12-12

假设我有一个数据网格,其中 itemssource 绑定到属性 Collection,例如 IEnumerable。当然,我为其编写了适当的 getter 和 setter。

现在,当我分配给这个属性(集合)时,只是 IEnumerable (作为某种方法的结果),例如:

Collection = FooMethod(); // FooMethod returns IEnumerable<MyClass>

数据网格将显示空行。行数将与集合的计数相匹配。

但是当我强制转换时,如下所示:

Collection = FooMethodp().ToArray(); // forced fetching data

数据网格现在将显示所有包含内容的行。

那么,在纯 IEnumerable 的情况下,是什么阻止 datagrid 显示数据呢?它必须迭代集合,因此无论如何都会发生获取。

edits

只是为了记录。我的班级是这样的:

public class ErrorsIndicators
{
    public double Min { get; set; }
    public double Max { get; set; }
    public double Avg { get; set; }
}

FooMethod 返回(返回产量)几个项目。所以,这里没什么特别的。


没有看到实施情况很难说FooMethod(),但我怀疑它正在返回实现的东西IEnumerable<T>但没有进一步的内容(例如ICollection<T> or IList<T>)。在这种情况下,DataGrid 似乎无法动态确定列名称,您需要通过DataGrid.Columns财产。

这是我整理的一个简单的复制品。

MainWindow.xaml.cs:

namespace DataGridTest
{
    using System.Collections.Generic;
    using System.Windows;

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            Customers = this.GetCustomers();
            DataContext = this;
        }

        private IEnumerable<Customer> GetCustomers()
        {
            yield return new Customer() { Name = "first" };
            yield return new Customer() { Name = "second" };
            yield return new Customer() { Name = "third" };
        }

        public IEnumerable<Customer> Customers
        {
            get;
            set;
        }
    }

    public class Customer
    {
        public string Name
        {
            get;
            set;
        }
    }
}

主窗口.xaml:

<Window x:Class="DataGridTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <DataGrid ItemsSource="{Binding Customers}">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
        </DataGrid.Columns>
    </DataGrid>
</Window>

如果您删除DataGrid.Columns从 XAML 来看,它显示三个空行。因此,当源仅实现时,似乎不是数据源的枚举被破坏IEnumerable<T>,而是自动创建列。

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

为什么纯 IEnumerable 的内容对于 WPF DataGrid 是不可见的? 的相关文章

  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 解析 HTML 文本时的正则表达式与 XPath

    我想解析 HTML 文本并找到特殊部分 例如第 3 行中的文本div of 1st row和第二个column of a table 我有 2 个解析选项 正则表达式和 XPath 每一种的优点和缺点是什么 thanks 这在某种程度上取决
  • 获取运行脚本的父目录

    在 PHP 中 最简洁的方法是什么 parent当前运行脚本相对于 www 根目录的目录 假设我有 SERVER SCRIPT NAME relative path to script index php Or just something
  • 绝对位置是否使该元素成为包含块?

    在css2 1规范中 w3 org 有一个例子解释了包含块是如何形成的 p This is text em in the strong second strong paragraph em p 当位置em作为静态 strong的包含块是通过
  • 窗口大小更改时调整标题大小

    我目前正在开发一个网站 我需要在其中放置一些图像以及一些标题和描述 如果浏览器是全屏 则标题显示在一行上 但是 如果浏览器宽度减小 标题会自动显示为两行 这是浏览器全屏时的样子 这是当浏览器宽度减小时的样子 我想让它在浏览器宽度减小时减小标
  • 如何用C++模拟鼠标点击? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我需要模拟单击应用程序窗口的鼠标单击 我正在使用 Windows 如何将鼠标左键单击发送到屏幕x y窗口所在的坐标 Use the 发送输入 功能 INPUT Inputs 3 0 I
  • 带 IdHTTP 的 POST 请求

    您好 我正在尝试使用组件 IdHTTP POST 方法填写表单 我的代码是这样的 var par2 TIdMultiPartFormDataStream rta string begin par2 TIdMultiPartFormDataS
  • GAE:此应用程序不允许 API 服务

    我正在尝试按照以下教程进行操作 http www youtube com watch v v9TG7OzsZqQ 我的 Cloud Endpoint REST API 在本地开发计算机上运行良好 但当我部署到 App Engine 时 我的
  • 调用另一个合约中的函数 - Solidity

    我需要使用 Truffle 调用另一个合约中的函数 这是我的合同样本 类别 sol contract Category notice Check if category exists function isCategoryExists ui
  • C# 按列按字母顺序对列表进行排序

    我定义了一个类 并将该类的记录写入列表中 在编写错误报告之前无法对列表进行排序 我试图在写入错误报告之前按 finderror 类型按字母顺序对列表进行排序 以便在错误报告中对列表进行排序并更有条理 这是课程 public class ty
  • 如何要求套接字等待更多数据到来

    我正在玩保留CLI项目 它是一个与统计环境 R 通信的 net 客户端 基本思想是通过 TCP 协议在此 NET 客户端和 R 会话之间发送数据 命令 我和其他人发现的一个错误是大数据主干 比如超过 10k 字节 无法成功传输 我在下面的代
  • C++11 中的可变长度结构非标准? [复制]

    这个问题在这里已经有答案了 可能的重复 struct hack 在技术上是未定义的行为吗 我检查了 C 11 中是否允许零长度数组 看来他们不是 从8 3 4 Arrays dcl array 如果存在常量表达式 5 19 则它应是整型常量
  • Android 5 ADB通知转储错误数据

    我构建了一个电脑程序 可以在您的桌面上运行 通知您有关通知 电量级别的信息 并让您与智能手机进行交互 整个 ADB 因此不需要手机上的应用程序 所有这一切都以一种时尚的方式进行 但这已经足够了 直到 Android 5 出现为止 通知转储
  • Bash 正则表达式在句子中查找特定单词

    我有一句话是这样的 The dog jumped over the moon because he likes jumping 我想找到所有匹配的单词jump i e jumped and jumping 我怎样才能做到这一点 目前我有一个
  • 从 Internet 读取 Inno Setup 加密密钥而不是密码框

    我希望设置从 HTTP 读取密码GET请求而不是直接来自用户 有什么方法可以绕过密码框并执行此操作吗 使用读取密钥WinHttpRequest对象 将其插入密码框并提交密码页面 Setup Password 123 Encryption y
  • 获取列值不为 NULL 的每个列计数

    我有一个表 表中有 5 列 我想要列值不为空的每一列的行数 column1 column2 column3 column4 column5 1 2 2 2 2 2 2 2 NULL 2 3 NULL 2 2 NULL NULL NULL 2
  • 如何使用 Capybara + Poltergeist 将文本设置到 Summernote 文本区域

    我有一个正在使用的文本区域夏日笔记我给它设置了 onChange 事件 我想用 RSpec Capybara Poltergeist 编写测试来确认 onChange 事件正常工作 据我检查 浏览器中显示的文本区域实际上是带有 note e
  • 在用户登录期间,使用正确的用户名和密码进行身份验证不会返回 None

    我的用户登录在身份验证过程中存在一些问题 我正在使用 Django 1 9 和 Python 3 6 这是我的代码存储库 用户 验证 用户名 用户名 密码 密码 将用户返回为无 这就是我的帐户 视图 py寻找登录 def register
  • 禁用特定应用程序的对讲

    我有一个为盲人修改Android手机的项目 因此我使用Android文本语音转换 我已经成功使用 TTS 库创建了一个 SMS 和电话应用程序http code google com p eyes free 并使用 myTTS speak
  • PHP 在关闭主窗口时销毁会话

    如何在关闭浏览器时销毁会话 当浏览器窗口关闭时 会话应终止 现在 如果我关闭窗口并输入应用程序 URL 它就允许我访问应用程序 本机 php 会话会在浏览器关闭时过期 只要您不修改会话 cookie 过期时间 就应该没问题 如果这种情况没有
  • 为什么纯 IEnumerable 的内容对于 WPF DataGrid 是不可见的?

    假设我有一个数据网格 其中 itemssource 绑定到属性 Collection 例如 IEnumerable 当然 我为其编写了适当的 getter 和 setter 现在 当我分配给这个属性 集合 时 只是 IEnumerable