【WPF】GridControl的使用

一、前言

在WPF中我们常常使用DataGrid来显示数据,在Dev中也有一个类似的控件—GridControl。

二、范例

 <dxg:GridControl
      Grid.Row="1"
      ItemsSource="{Binding SelectedSummaryInfos}"
      Margin ="5" >
            <dxg:GridControl.View >
                <dxg:TableView Name="SummaryTable"  AutoWidth="True" AllowMoveColumnToDropArea="False"/>
            </dxg:GridControl.View>
            <dxg:GridControl.Columns>
                <dxg:GridColumn   Header="楼层" Binding="{Binding FloorName}" ReadOnly="True"/>
                <dxg:GridColumn   Header="类型" Binding="{Binding QuantificationType}" ReadOnly="True"/>
                <dxg:GridColumn   Header="级别" Binding="{Binding RType}">
                    <dxg:GridColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding RowData.Row.RType}" FontFamily="SJQY"></TextBlock>
                        </DataTemplate>
                    </dxg:GridColumn.CellTemplate>
                </dxg:GridColumn>
                <dxg:GridColumn   Header="直径(mm)" Binding="{Binding Diameter}" ReadOnly="True" />
                <dxg:GridColumn   Header="总长(m)" Binding="{Binding Quantity,StringFormat={}{0:###.###}}" ReadOnly="True"/>
                <dxg:GridColumn   Header="总重(t)" Binding="{Binding Weight,StringFormat={}{0:###.###}}" ReadOnly="True" />
            </dxg:GridControl.Columns>
 </dxg:GridControl>

通过以上代码范例,我们可以看到以下几个特点:

1. 当GridContol显示时默认有一个拖拽框用以将字段拖入其中进行分组排序,这是一个很强大的功能,如果你不需要这个功能,可以ShowGroupPanel=“false”。

2. AllowMoveColumnToDropArea="False"是不让用户随意拖拽某一列至垃圾区。

3. GridControl通过设置TableView的AutoWidth=“Auto”来使Columns占满整个Grid,如果不设置的话有时候你会发现展现出的Grid会多出一列!

4. GridControl通过TableView的Name来进行某些操作,如导出成Excel:

var projectName = "Project";
if (projectNameItem != null)
{
      projectName = projectNameItem.Value;
}

var dlg = QSContainer.Resolve<ISaveFileDialogService>(); //IOC
dlg.Filter = "Excel file(*.xls)|*.xls";
dlg.DefaultFileName = $"{projectName}_{"Summary.xls"}";
if (!dlg.ShowDialog())
{
     return;
}

     var filePath = dlg.GetFullFileName();
     SummaryTable.ExportToXls(filePath);  // Name !
try
{
     Process.Start(filePath);
}
finally { }

5. dxg:GridColumn不能直接包含FontFamily等在DataGridTextColumn中常见的属性,需要重写Template,重写的时候有两个地方需要绑定,Template绑定的是RowData.Row.XX:

<dxg:GridColumn   Header="级别" Binding="{Binding RType}">    //第一处绑定
     <dxg:GridColumn.CellTemplate>
           <DataTemplate>
                   <TextBlock Text="{Binding RowData.Row.RType}" FontFamily="MS"></TextBlock>   //第二处绑定,这里是RowData.Row.XX
           </DataTemplate>
     </dxg:GridColumn.CellTemplate>
</dxg:GridColumn>

三、小结

本文大致介绍了Dev的GridControl的基本功能,其实GridControl还有很多有用的设置可以去探索一下,我这里就做个抛砖引玉吧。

时间: 2024-10-21 10:55:16

【WPF】GridControl的使用的相关文章

DevExpress WPF GridControl 绑定行的前景色和背景色

怎样通过判断一个行内的字段的值来改变该行的颜色呢? 我们使用绑定来做: GridControl控件的行的概念很模糊,我们要想动态改变行的颜色不是设置一下Background就能做到的,我们需要改变它的RowStyle,下面是代码: 1 <Style x:Key = "RowStyle" BasedOn = "{StaticResource {dxgt:GridRowThemeKey ResourceKey=RowStyle}}" TargetType = &q

[Irving] Wpf DevexPress GridControl 获取选中行

WPF前台绑定事件代码: <RelayAction TargetControl="{Binding ElementName=GCInstoragePart}" MethodName="GridClick" MethodParameter="{XParamBinding me}" TriggerEvent="Click" /> 后台事件代码: public void GridClick(RelayAction r,

WPF datagrid/gridcontrol 中选中多行,复制粘贴到excel或其他文本编辑器中

wpf中 data grid 开启自带的选中,然后复制,可以到excel中直接粘贴,在某些业务场景中很实用,方便.开启也很简单: SelectionMode="Row" 加上这个,按ctrl或shift然后鼠标单击行选中 <dxg:GridControl x:Name="user_GridControl" SelectionMode="Row" > </dxg:GridControl> 原文地址:https://www.c

WPF界面开发:DevExpress WPF在GridControl中固定行时处理时刻

DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案. 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过该控件来实现. 本文 将为大家介绍如何在GridControl中固定行时处理时刻.在接下来的系列文章中,小编将为大家介绍一些De

【WPF学习日记——[DevExpress]】GridControl 行中使用按钮

想到的办法都试了,只有这个能用,不一定是最好的,但却是自己能想到的,记录一下. <dxg:GridColumn Header="操作" Width="134" DisplayMemberBinding="{Binding AddSwitchSeqCommand}"> <dxg:GridColumn.DisplayTemplate> <ControlTemplate> <Button Content=&qu

DEVExpress For WPF 中GridControl如何实现滚动分页(延迟查询)

在显示大量数据时一般采用分页显示,但是最近用户需要滚动显示,那么问题来了,滚动显示要求将数据全部查询回来,这显然会导致显示速度很慢. 好在想到一种方式,就是当用户滚动鼓动条的时候再查询下面的数据.好吧 不多说了 上代码 private void GridControl_ScrollChanged(object sender,ScrollChangedEventArgs e){ if(e.ViewprotHeight!=e.ExtentHeight&&e.ExtentHeight!=0)//

WPF DEV gridcontrol当前项的数据导出为mdb文件

/// <summary> /// 导出为mdb /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnExportMdb_Click(object sender, RoutedEventArgs e) { try { using (DataTable dts =

WPF DEV实现手风琴效果

说明 最近用WPF+DevExpress做项目时,需要做一个类似手风琴的效果,效果的界面如下.因为没有现成的控件,需要自定义模板,所以写了一个Demo和大家分享,项目中可以根据实际情况使用.如果你用不同的方式达到了同样的效果,欢迎一起交流,共同进步. 需求 思路 WPF开发项目的时候,一定要记住一个原则,即数据驱动程序,在WPF中,数据永远是主要的地位,仔细分析上面的数据,可得出如下的结构 Group1 ParmName1  ParmValue1 ParmName2 ParmValue2 Gro

WPF仿Word头部格式,涉及DEV RibbonControl,NarvbarControl,ContentPresenter,Navigation

时隔1个月,2015/06/17走进新的环境. 最近一个星期在学习仿Word菜单栏的WPF实现方式,废话不多说,先看一下效果. 打开界面后,默认选中[市场A],A对应的菜篮栏入上图, 选择[市场B]后讲改变菜单栏,和B相应的界面. 要实现上述的功能,要怎么解决? 实际上,每个界面都可以看成有三部分组成,顶部的DEV.RibbonControl,左侧的DEV.NavbarControl,和中间显示主要界面C部分. NavBarControl中包含多个NavBarItem,当切换NavBarItem