DevExpress WPF中文教程:如何完成GridControl的列和编辑器配置?

DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。

本教程演示如何调整列布局、指定单元格编辑器和设置显示值的格式,本教程以上一篇内容为基础(点击这里回顾>>)。

获取DevExpress v24.1正式版下载(Q技术交流:532598169)

创建列

如果AutoGenerateColumns属性设置为AddNew,GridControl将为绑定数据源中的所有字段生成列。向GridControl显式地添加列,来仅显示所需的列和每个列的访问设置:

  1. DataControlBase.AutoGenerateColumns属性设置为None(默认值)。

  2. GridColumn 对象添加到GridControl.Columns 集合,因为这个集合是GridControl内容属性,所以可以直接将GridColumn对象添加到GridControl标记中。

  3. 指定ColumnBase.FieldName属性将其绑定到数据源字段。

MainView.xaml

XML 复制代码
<dxg:GridControl EnableSmartColumnsGeneration="True"
ItemsSource="{Binding Orders}">
<dxg:GridControl.View>
<dxg:TableView/>
</dxg:GridControl.View>
<dxg:GridColumn FieldName="OrderId"/>
<dxg:GridColumn FieldName="CustomerId"/>
<dxg:GridColumn FieldName="OrderDate"/>
<dxg:GridColumn FieldName="ShipVia"/>
<dxg:GridColumn FieldName="Freight"/>
<dxg:GridColumn FieldName="ShipName"/>
<dxg:GridColumn FieldName="ShipCity"/>
<dxg:GridColumn FieldName="ShipCountry"/>
</dxg:GridControl>
更改列布局

自适应列GridControl,并设置所有列的最佳宽度,来完全显示其内容:

  1. TableView.AutoWidth属性设置为true来使列自适应GridControl。

  2. 指定TableView.BestFitModeOnSourceChange属性根据单元格和标题内容计算所有列的最佳宽度。

MainView.xaml

XML 复制代码
<dxg:GridControl.View>
<dxg:TableView AutoWidth="True"
BestFitModeOnSourceChange="VisibleRows"/>
</dxg:GridControl.View>
指定一个In-Place编辑器

GridControl使用in-place编辑器编辑单元格值,编辑器类型取决于列内容。CheckEdit用于布尔值,DateEdit用于日期,TextEdit用于字符串和数字,您可以定义一个自定义编辑器如下(例如,ComboBoxEdit):

  1. 向视图模型添加一个Shippers集合:

MainViewModels.cs

cs 复制代码
using DevExpress.Mvvm;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using WPFBlankDotNETCoreAppWithNorthwindDatabase.Models;

namespace WPFBlankDotNETCoreAppWithNorthwindDatabase {
public class ViewModel : ViewModelBase {
NorthwindEntities northwindDBContext;

public ICollection<Order> Orders {
get => GetValue<ICollection<Order>>();
private set => SetValue(value);
}
public ICollection<Shipper> Shippers {
get => GetValue<ICollection<Shipper>>();
private set => SetValue(value);
}

public ViewModel() {
northwindDBContext = new NorthwindEntities();

northwindDBContext.Orders.Load();
Orders = northwindDBContext.Orders.Local;

northwindDBContext.Shippers.Load();
Shippers = northwindDBContext.Shippers.Local;
}
}
}

MainViewModels.vb

vbnet 复制代码
Imports DevExpress.Mvvm
Imports Microsoft.EntityFrameworkCore
Imports System.Collections.Generic
Imports WPFBlankDotNETCoreAppWithNorthwindDatabase.Models

Namespace WPFBlankDotNETCoreAppWithNorthwindDatabase
Public Class ViewModel
Inherits ViewModelBase

Private northwindDBContext As NorthwindEntities

Public Property Orders As ICollection(Of Order)
Get
Return GetValue(Of ICollection(Of Order))()
End Get
Private Set(ByVal value As ICollection(Of Order))
Return SetValue(value)
End Set
End Property

Public Property Shippers As ICollection(Of Shipper)
Get
Return GetValue(Of ICollection(Of Shipper))()
End Get
Private Set(ByVal value As ICollection(Of Shipper))
Return SetValue(value)
End Set
End Property

Public Sub New()
northwindDBContext = New NorthwindEntities()
northwindDBContext.Orders.Load()
Orders = northwindDBContext.Orders.Local
northwindDBContext.Shippers.Load()
Shippers = northwindDBContext.Shippers.Local
End Sub
End Class
End Namespace
  1. xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" 命名空间添加到ThemedWindow

  2. 创建一个ComboBoxEditSettings对象,并将其分配给ShipVia列的ColumnBase.EditSettings属性。

  3. 指定ItemsSource属性将ComboBoxEditSettings绑定到数据。

  4. DisplayMember属性设置为CompanyName,将ValueMember属性设置为ShipperId。

MainView.xaml

XML 复制代码
<dx:ThemedWindow
...
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors">
<!-- ... -->
<dxg:GridColumn FieldName="ShipVia">
<dxg:GridColumn.EditSettings>
<dxe:ComboBoxEditSettings ItemsSource="{Binding Shippers}"
DisplayMember="CompanyName"
ValueMember="ShipperId"/>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
格式值

您可以配置GridControl显示数据的方式,下面的示例将运费列数据格式化为货币:

  1. 创建一个TextEditSettings 对象,并将其分配给Freight列的ColumnBase.EditSettings 属性。

  2. 指定TextEditSettings.MaskTypeTextEditSettings.Mask属性来设置编辑器掩码为货币。

  3. TextEditSettings.MaskUseAsDisplayFormat属性设置为true。

MainView.xaml

XML 复制代码
<dxg:GridColumn FieldName="Freight">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings Mask="c" MaskType="Numeric"
MaskUseAsDisplayFormat="True"/>
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
相关推荐
唐青枫21 分钟前
C#.NET SignalR + Redis Backplane 深入解析:多节点部署与跨实例消息同步
c#·.net
Java开发追求者1 小时前
.NET Framework,Version=v4.8下载地址
.net·.net framework·version=v4.8
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 基于.NET MVC的婚庆服务系统设计为例,包含答辩的问题和答案
mvc·.net
步步为营DotNet2 小时前
#.NET Aspire在云原生应用部署与管理中的深度实践
云原生·.net
bugcome_com2 小时前
WPF 命令 ICommand 从原理到实战
后端·wpf·icommand
彭波39614 小时前
.NET Framework 3.5问题修复教程!可以离线修复
windows·安全·电脑·.net·开源软件
武藤一雄21 小时前
WPF处理耗时操作的7种方法
microsoft·c#·.net·wpf
Venom841 天前
我的 WPF Powermill 工具
wpf
武藤一雄1 天前
C#常见面试题100问 (第一弹)
windows·microsoft·面试·c#·.net·.netcore
江沉晚呤时1 天前
.NET 9 快速上手 RabbitMQ 直连交换机:高效消息传递实战指南
开发语言·分布式·后端·rabbitmq·.net·ruby