学习
实践
活动
专区
工具
TVP
写文章

OEA WPF 树型表格虚拟化设计方案

我们得先看看如何在 WPF 实现虚拟化。 如果这个有所变化,则应该调用 ScrollOwner.InvalidateScrollInfo 通知 ScrollOwner 来重新获取最新的总高度,以计算出滚动条最新的大小。     表格的虚拟化     由前面的内容可以看出,如果要在 WPF 实现一个行列都支持虚拟化的 UIVPanel,只需要从 VirtualizingPanel 上继承下一个 UIVPanel 类型,并根据的宽度来计算并生成相应的单元格就行了 还好,WPF 自带的 DataGrid 也带有行列虚拟化的功能,我们可以先看一下 DataGrid 是如何实现的。 下图是 DataGrid 打开行、虚拟化功能后生成的可视树: ?     为了使用最外层 ScrollViewer 的滚动条信息,它通过可视树往上查找到 DataGridRowsPresenter 来获取水平方向上的滚动条位置 HorizontalOffset,而通过这个

78170

Silverlight 2 Beta 1学习资源

Using Silverlight 2's DataGrid with WCF + LINQ to SQL: 这个15分钟的录像博客示范了如何在服务器上建造一个LINQ to SQL对象模型,然后用WCF 将其发布,然后示范了如何建造一个使用了新的Silverlight DataGrid控件的Silverlight客户端,该客户端调用WCF服务获取LINQ to SQL数据,将其绑定到DataGrid上。 Simple Editing of Web Service Data in a DataGrid: Mike Taulty有一篇好贴,展示如何在服务器上建造WCF服务,然后从Silverlight 2客户端使用它来获取数据 Sorting with Silverlight 2's DataGrid Control: Silverlight 2 Beta1DataGrid控件还没有内置的数据排序支持(将在Beta2提供 在这个贴子里,他展示了如何使用一个定制的header方法来实现排序。也看一下Matt的这里的贴子,该文提供了一个DataGrid测试页面,展示了目前DataGrid的若干特性。

43070
  • 广告
    关闭

    618夏日盛惠

    2核2G云服务器首年95元,GPU云服务器低至9.93元/天,还有更多云产品低至0.1折…

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Newbeecoder.UI新版开源控件库DataGrid使用说明

    DataGrid控件显示数据和信息的集合。在WPF能自定义外观,单元格,表格头部,字体,颜色等内容。 使用ItemsSource属性进行数据源绑定,绑定任何实现IEnuemerable的数据源。 默认情况下,当用户单击DataGrid的单元格时会选择整行,如果用户选择多行设置SelectionMode属性。假如不想生成自动使用AutoGenerateColumns属性设置为false。 Microsoft Docs对DataGrid每项功能有详细说明。 在样式中有常见的表格选项,交替行背景和显示/隐藏标题,网格线和滚动条。 Newbeecoder.UI是一个轻量级和扩展性的开源项目,基于MVVM开发框架,可用来快速搭建WPF应用程序,而无需了解控件内部实现细节,方便扩展更多控件样式以及使用,该项目使用纯C#+WPF开发,易于扩展和集成到开发项目中 开发框架经过严格的技术验证和系统测试,压力测试,得到广大用户的赞誉和好评。我们积极收集用户反馈的意见,不断完善和改进,最新版本极少有系统性缺陷。

    88130

    本地化入门

    2.6 在程序集之间共享资源 上面有提过,在获取第三方类库某个资源十分麻烦,不仅如此,连获得第三方类库的资源词典名称都十分麻烦。 在VisualStudio创建后缀名为resx的资源文件并打开,可在以下UI编辑资源文件的(将访问修饰符改为public用起来方便些): ? 需要在ApplicationResources添加一个属性: private string _language; ///

    /// 获取或设置 Language 的 /// </ 结语 这篇文章只介绍了本地化的入门知识,其它还有很多本地化的要点,验证信息的本地化没有涉及。 WPF 全球化和本地化概述里有介绍一些本地化的最佳做法,UI上应该使用相对布局而非绝对布局、字体选择等,这里不再累赘。

    85420

    【我们一起写框架】MVVM的WPF框架(五)—完结篇

    DataGrid高级应用 在高级应用,我们对表格增加了过滤功能。界面效果如下: ? 在代码可以看到,我们为Filter赋值了一个匿名委托;这个委托有一个入参和一个返回;其中,入参是我们表格的行的DataContext,返回是Bool类型,表示这行在表格是否显示。 = "用户信息列表"; DataGrid.SkipNumber = 3; DataGrid.BindSource(Load, null); } 在代码可以看到,我们首先通过testDataProxy.GetDataGridConfig ()方法,从代理获取了表格配置。 相关文章: 【我们一起写框架】MVVM的WPF框架(一)—序篇 【我们一起写框架】MVVM的WPF框架(二)—绑定 【我们一起写框架】MVVM的WPF框架(三)—数据控件 【我们一起写框架】MVVM的WPF

    1.2K40

    深入解析 DataGrid 过滤功能

    本文要解析的不是标准DataGrid,而是Silverlight和WPF平台下的C1DataGrid的过滤功能。 根据不同的数据类型,C1DataGrid还提供了特殊的过滤器。比如日期类型或者布尔类型的,可以选择适合的条件过滤器,如下图所示: ? 可作为过滤条件的以选择列表的形式显示,用户可以选择那些显示,那些不显示,这为拥有唯一或者重复提供了非常有效的过滤方式(例如:类别或类型)。你可以通过两种方法实现多值过滤功能。 你可以将高级过滤功能关闭,直接在XAML或代码为每一指定特殊的过滤类型,下面演示如何为某一添加多值过滤功能: <c1:C1DataGrid Name="c1DataGrid1" ItemsSource FilterLoading在每的过滤器加载后触发,你可以在这个事件设置自定义的过滤器。FilterOpened在过滤器被打开之后触发,此时可以动态设置一些选项的

    1.3K70

    Windows Community Toolkit 4.0 - DataGrid - Overview

    DataGrid 控件是一个可以展示多行多数据集合的控件,相信大家在 Silverlight WPF 等平台开发中都有过接触,该控件非常适合用来展示数据表格,可以完全是文本内容展示,也可以在数据包含按钮等操作 这两个类,都会在 DataGrid 获取数据源时被使用到。 ? 2. Utilities Utilities 是 DataGrid 控件的基础类和帮助类集合,可以看到涉及到绑定,数值相等(接近)判断,扩展功能,索引映射,键盘帮助类,范围,类型帮助类,UI 设置帮助类, DataGrid DataGrid 控件的最重要实现在 DataGrid 文件夹,一共有 50 多个类。 总结 到这里我们就把 Windows Community Toolkit 4.0 的 DataGrid 概览和代码整体结构讲解完成了,希望能对大家更好的理解和使用这个功能有所帮助。

    42920

    OEA WPF 树型表格整体重构

    而花较大精力做这件事的原因,主要是因为: 业务需要支持一系列新功能:整行编辑、上下箭头键进行导航、合计行、锁定 等。 控件显示性能较差,需要支持虚拟化。 而我们的表格 API,也应该象 WPF 原生的 System.Windows.Controls.DataGrid 控件接口类似。 这里,我分析了一下 DataGrid ,认为一些比较重要的 API: ? 图 DataGrid 重点API     九、十月私下的时间,都在思考、设计、编码这玩意儿。 通过添加一些 bool 类型的防止重入的字段,Measure 可以做所有逻辑操作之后、渲染之前的控件构造、刷新、替换、状态变更,并对最终确定的可视树子元素进行测量。: if(this. 而 ApplyTemplate 方法内部则会通过一个 bool 类型的状态来检测是否已经应用过模板,以防止重入。

    69760

    C# WPF DataGrid获取单元格并改变背景色

    01 概述 WPF 自带了一个表格控件datagrid,这个控件类似winfrom的datagridview,在数据显示的时候也经常会用到,这节主要讲解如何从后台代码获取到单元格控件并改变其相关属性: str); //方案2 colindex = this.dgSourceData.CurrentCell.Column.DisplayIndex;//获取选中单元格号 DataGridCellEditEndingEventArgs e) { } ///

    /// 获取父可视对象第一个指定类型的子可视对象 Single" SelectionUnit="Cell" 这样修改后SelectionChanged这个事件将不再触发(只有在行选中模式下生效); ②获取选中单元格的: var info = this.dgSourceData.SelectedCells.FirstOrDefault ;//获取选中单元格号 ④获取选中行的行号 在SelectionUnit="FullRow" 时候: 可以通过这样获取: rowindex = this.dgSourceData.SelectedIndex

    1.2K20

    WPF 属性变动后的业务处理及恢复原始的方法

    WPF 属性变动后的业务处理及恢复原始的方法独立观察员 2023 年 2 月 26 日一、前言本文主要介绍在 WPF ,当属性变动后,如何依据是哪个属性变动了,以及其变动的的情况来进行相应业务处理的推荐的方式 四、恢复属性原始要恢复属性的原始,就需要事先获取并存储了该原始,这里的 获取 就要用到第二节中提到的 PropertyChanging 事件了,至于存储,我这里是用了个 Dictionary<string 具体就是,在 PropertyChanging 的方法,使用反射获取属性,以属性名作为 key,以属性作为 value,存储到字典 _originPropertyValueDict (这部分代码是固定且通用的 WPF 元素导出为图片的方法让 WPF 的 RadioButton 支持再次点击取消选中的功能WPF DataGrid 如何将被选中行带到视野WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题WPF DataGrid 通过自定义表头模拟首行固定WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换【翻译】WPF 附加行为的介绍 Introduction

    45850

    day51_BOS项目_03

    主要是针对本系统的一些自定义项,需要参照录入,并作为统计分析和计算的维度,用户根据自己的需要动态设置的基础档案;对于自定义的档案支持多级定义;     系统会事先预置一些系统级别的基础档案,线路类型 数据网格(datagrid)的设计目的是为了减少开发时间,且不要求开发人员具备指定的知识。它是轻量级的,但是功能丰富。它的特性包括单元格合并,多页眉,冻结和页脚,等等。 5、基于datagrid实现取派员分页查询 第一步:修改staff.jsp页面datagrid的URL地址,访问action     // 取派员信息表格     $('#grid').datagrid for(var i=0; i<rows.length; i++) {                 var id = rows[i].id; // 获取属性id的                 array.push </query> (Column)属性,单元格的格式化函数:formatter     // 定义     var columns = [ [ {         field : 'id',

    1.6K10

    dotnet 7 已知问题 WPF 的 TreeView 开启虚拟化之后只显示首项

    也影响到 DataGrid 控件,让 DataGrid 控件只显示首项,如下图 最简复现代码请看 https://github.com/lindexi/lindexi_gd/commit/49d40420d1a99b09a129c31c240466032fb69e46 此问题的报告地址: https://github.com/dotnet/wpf/issues/7321 此问题的修复地址: https://github.com/dotnet/wpf/pull/7426 问题的原因是在 dotnet 7 的性能优化,为了减少装箱损耗,修改了相等判断逻辑。 使用引用相等判断,要求传入的对象是引用相等的,才能返回 true 。 而 Equals 是对象逻辑相等判断,只要逻辑上是等价的,重写 Equals 方法,根据一定的规则返回 true ,那将返回相等 这就导致了在判断后续项的时候,判断逻辑行为变更,而且判断逻辑不符合预期

    14950

    UI标签库的话题:JEECG智能开发平台 BaseTag(样式表和JS标签的引入)

    及自己定义扩展JS DatePicker 引入版本号My97DatePicker4.8 Beta2 Jqueryui 引入版本号jquery-ui-1.9.2 prohibit 经常使用浏览器操作JS函数禁用右键菜单 Datagrid(数据表) 2.1.DataGrid父标签 2.1.1.演示样例 <t:dategrid name=”” actionUrl=””></t:dategrid> 2.1.3.方法 方法名 传入參数 描写叙述 reloadTable 无 又一次载入数据 reload+name 无 又一次载入数据name是表格唯一标示 get+name+Selected field 获取选定行传入字段的 getSelected field 获取选定行传入字段的 get+name+Selections field 获取全部选定行传入字段的数组集合 name+search 无 运行查询前提是Column 事件 事件名 传出參数 描写叙述 onClickRow rowIndex,rowData 行单击事件 onDblClickRow rowIndex,rowData 行双击事件 onLoadSuccess

    30820

    XAML常用控件2

    wpf和WinFormXY轴的定义是一样的,都是从程序的左上角作为原点,原点到右上角这一条线是X轴,原点到左下角这一条线是Y轴。 DockPanel它自身有一个非常重要的bool属性:LastChildFill,当这个属性为True时,最后一个添加在该布局控件的控件会自动填满剩余空间,即使为其赋了DockPanel.Dock 控件 这个控件就是一个表格,跟数据库的表是类似的,并且它的职责就是用来显示数据库的数据,下面先看个实例代码: <DataGrid ItemsSource="后台数据源"> <DataGrid.Columns > </DataGrid> 该控件同样是使用ItemsSource来绑定数据,我们使用该控件时要先通过DataGrid.Columns来定义的数量及类型,微软已经为我们定义了上述代码中所示的文本 ,选择框,下拉框,超链接四个常用类型,根据业务需求,我们也可以通过DataGridTemplateColumn来自定义模板。

    32230

    jQuery EasyUI 详解

    名称 类型 说明 默认 columns array datagrid 的 column 的配置对象,更多详细请参见 column 的特性。 默认的 view null (Column)的特性 DataGrid 的 Column 是一个数组对象,它的每个元素也是一个数组。数组元素的元素是一个配置对象,它定义了每个的字段。 名称 类型 说明 默认 title string 的标题文字。 undefined field string 的字段名。 undefined width number 的宽度。 onDblClickRow rowIndex, rowData 当用户双击一行时触发,参数包括: rowIndex:被双击行的索引,从 0 开始。rowData:被双击行对应的记录。 getChanges type 获取最后一次提交以来更改的行,type 参数表示更改的行的类型,可能的是:inserted、deleted、updated,等等。

    5K10

    【我们一起写框架】MVVM的WPF框架(三)—数据控件

    string>(); ChangeTextBox.TextChangeCallBack = (text) => { MessageBox(text); };//声明TextChange } 代码所示 因为WPF的UI控件被创建以后,要被添加到视觉树,所以最终会被显示在屏幕上的是包裹着控件的视觉树;其中视觉树与控件是可以分离的;比如控件绑定的数据是10行,而视觉树可以显示3行。 ComboBox应用 在应用之前,我们先在Proxy建立一个获取数据是代理。 ? 因为DataGrid数据控件是所有数据控件中最复杂的,而且代码量特别多;所以,我决定,单拿出一篇来介绍DataGrid。 框架代码已经传到Github上了,并且会持续更新。 相关文章: 【我们一起写框架】MVVM的WPF框架(一)—序篇 【我们一起写框架】MVVM的WPF框架(二)—绑定 To be continued——DataGrid Github地址:https://

    80430

    DataGrid的ItemDataBound事件

    DataGrid之ItemCommand事件 如下代码是将 e.Item.Cells[3].Text;的传个下一个跳出的页面,这个格式要 记住它支持ItemCommand事件,给DataGrid添加这个事件的方法是 :点击其属性面板的闪电按钮, 仔细找找,一定能找,我给你图,你看看,双击那个itemcommand即可,然后进入后台代码,在代码添加 如下事件 说明一点的是:sel是在属性生成器里找一个按钮,然后给其命令名称为 sel,还有传的是 第四行绑定的内容。 问号串不错的说, Response.Redirect ("messageboardlx.aspx?states=1"); 调用messageboardlx.aspx页,并将放入states。 利用DataGrid的ItemDataBound事件,我们可以轻松实现一些实用的功能。

    15940

    扫码关注腾讯云开发者

    领取腾讯云代金券