WPF 中DataGrid控件显示和设置数据

一、基础知识

 1、DataGrid控件:用来显示数据的控件,从对象集合中获取信息并在具有行和单元格的网格中显示信息。每行和单独的对象相对应,并且每列和对象的某个属性相对应。

2、在DataGrid 中同时包含“自动生成列”与“用户自定义列” 由属性AutoGenerateColumns控制。

<DataGrid Name="dataGrid1" AutoGenerateColumns="True" />//自动生成列(默认)

<DataGrid Name="dataGrid1" AutoGenerateColumns="False" />//用户自定义列

3、DataGrid常用属性

组件常用方法:

BeginEdit:使DataGrid进入编辑状态。

CancelEdit:取消DataGrid的编辑状态。

CollapseRowGroup:闭合DataGrid的行分组。

CommitEdit:确认DataGrid的编辑完成。

ExpandRowGroup:展开DataGrid的行分组。

GetGroupFromItem:从具体Item中得到分组。

ScrollIntoView:滚动DataGrid视图。

 

组件常用属性:

AlternatingRowBackground:获取或设置一个笔刷用来描绘DataGrid奇数行的背景。

AreRowDetailsFrozen:获取或设置一个值用来判断是否冻结每行内容的详细信息。

AreRowGroupHeadersFrozen:获取或设置一个值用来判断是否冻结分组行的头部。

AutoGenerateColumns:获取或设置一个值用来判断是否允许自动生成表列。

CanUserReorderColumns:获取或设置一个值用来判断是否允许用户重新排列表列的位置。

CanUserSortColumns:获取或设置一个值用来判断是否允许用户按列对表中内容进行排序。

CellStyle:获取或设置单元格的样式。

ColumnHeaderHeight:获取或设置列头的高度。

ColumnHeaderStyle:获取或设置列头的样式。

Columns:获取组件中包含所有列的集合。

ColumnWidth:获取或设置列宽。

CurrentColumn:获取或设置包含当前单元格的列。

CurrentItem:获取包含当前单元格且与行绑定的数据项。

DragIndicatorStyle:获取或设置当拖曳列头时的样式。

DropLocationIndicatorStyle:获取或设置呈现列头时的样式。

FrozenColumnCount:获取或设置冻结列的个数。

GridLinesVisibility:获取或设置网格线的显示形式。

HeadersVisibility:获取或设置行头及列头的显示形式。

HorizontalGridLinesBrush:获取或设置水平网格线的笔刷。

HorizontalScrollBarVisibility:获取或设置水平滚动条的显示样式。

IsReadOnly:获取或设置DataGrid是否为只读。

MaxColumnWidth:获取或设置DataGrid的最大列宽。

MinColumnWidth:获取或设置DataGrid的最小列宽。

RowBackground:获取或设置用于填充行背景的笔刷。

RowDetailsTemplate:获取或设置被用于显示行详细部分的内容的模板。

RowDetailsVisibilityMode:获取或设置一个值用以判定行详细部分是否显示。

RowGroupHeaderStyles:获取呈现行分组头部的样式。

RowHeaderStyle:获取或设置呈现行头的样式。

RowHeaderWidth:获取或设置行头的宽度。

RowHeight:获取或设置每行的高度。

RowStyle:获取或设置呈现行时的样式。

SelectedIndex:获取或设置当前选中部分的索引值。

SelectedItem:获取或设置与当前被选中行绑定的数据项。

SelectedItems:获取与当前被选中的各行绑定的数据项们的列表(List)。

SelectionMode:获取或设置DataGrid的选取模式。

VerticalGridLinesBrush:获取或设置垂直网格线的笔刷。

VerticalScrollBarVisibility:获取或设置垂直滚动条的显示样式。

 

组件常用事件:

BeginningEdit:发生于一个单元格或行进入编辑模式之前。

CellEditEnded:发生于一个单元格编辑已被确认或取消。

CellEditEnding:发生于一个单元格正在结束编辑时。

CurrentCellChanged:发生于一个单元格成为当前单元格时。

PreparingCellForEdit:发生于在DataGridTemplateColumn下的单元格进入编辑模式时。

SelectionChanged:发生于当SelectedItem或SelectedItems属性值改变时。

4、DataGrid控件的列类型

  • DataGridTextColumn:标准数据
  • DataGridCheckBoxColumn:显示复选框
  • DataGridHperlinkColumn:显示可单击的连接。
  • DataGridTemplateColumn:显示列值定义数据模板。

二、简单数据显示

显示目标

 1、前台界面设计

 <DataGrid AutoGenerateColumns="False" x:Name="DataGrid_Measure1" CanUserAddRows="False" Margin="0,19,43.8,0" Width="Auto" Grid.Row="1" Grid.RowSpan="2" Grid.Column="1" Grid.ColumnSpan="3" RenderTransformOrigin="0.5,0.5">
                        <DataGrid.RenderTransform>
                            <TransformGroup>
                                <ScaleTransform/>
                                <SkewTransform AngleY="-0.002"/>
                                <RotateTransform/>
                                <TranslateTransform Y="-0.007"/>
                            </TransformGroup>
                        </DataGrid.RenderTransform>
                        <DataGrid.Columns>
                                <DataGridTextColumn Header="压力变送器1" Binding="{Binding Datagrid_Content}" Width="90" />
                                <DataGridTextColumn Header="      0" Binding="{Binding Datagrid_Pre1, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="50"/>
                                <DataGridTextColumn Header="      1" Binding="{Binding Datagrid_Pre2, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="50"/>
                                <DataGridTextColumn Header="      2" Binding="{Binding Datagrid_Pre3, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="50"/>
                                <DataGridTextColumn Header="      3" Binding="{Binding Datagrid_Pre4, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="50"/>
                                <DataGridTextColumn Header="      4" Binding="{Binding Datagrid_Pre5, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width ="50"/>
                            </DataGrid.Columns>
                        </DataGrid>

2、后台设置

(1)绑定数据源

  public class Datagrid_data : INotifyPropertyChanged
        {


            private string _Datagrid_Pre1;
            private string _Datagrid_Pre2;
            private string _Datagrid_Pre3;
            private string _Datagrid_Pre4;
            private string _Datagrid_Pre5;
            private string _Datagrid_Pre6;
            private string _Datagrid_Pre7;
            private string _Datagrid_Pre8;
            private string _Datagrid_Pre9;
            private string _Datagrid_Pre10;


            public string Datagrid_Content { get; set; }
            public string Datagrid_Pre1 { set { this._Datagrid_Pre1 = value; OnPropertyChanged("Datagrid_Pre1"); } get { return _Datagrid_Pre1; } }
            public string Datagrid_Pre2 { set { this._Datagrid_Pre2 = value; OnPropertyChanged("Datagrid_Pre2"); } get { return _Datagrid_Pre2; } }
            public string Datagrid_Pre3 { set { this._Datagrid_Pre3 = value; OnPropertyChanged("Datagrid_Pre3"); } get { return _Datagrid_Pre3; } }
            public string Datagrid_Pre4 { set { this._Datagrid_Pre4 = value; OnPropertyChanged("Datagrid_Pre4"); } get { return _Datagrid_Pre4; } }
            public string Datagrid_Pre5 { set { this._Datagrid_Pre5 = value; OnPropertyChanged("Datagrid_Pre5"); } get { return _Datagrid_Pre5; } }
            public string Datagrid_Pre6 { set { this._Datagrid_Pre6 = value; OnPropertyChanged("Datagrid_Pre6"); } get { return _Datagrid_Pre6; } }
            public string Datagrid_Pre7 { set { this._Datagrid_Pre7 = value; OnPropertyChanged("Datagrid_Pre7"); } get { return _Datagrid_Pre7; } }
            public string Datagrid_Pre8 { set { this._Datagrid_Pre8 = value; OnPropertyChanged("Datagrid_Pre8"); } get { return _Datagrid_Pre8; } }
            public string Datagrid_Pre9 { set { this._Datagrid_Pre9 = value; OnPropertyChanged("Datagrid_Pre9"); } get { return _Datagrid_Pre9; } }
            public string Datagrid_Pre10 { set { this._Datagrid_Pre10 = value; OnPropertyChanged("Datagrid_Pre10"); } get { return _Datagrid_Pre10; } }
            public event PropertyChangedEventHandler PropertyChanged;

            void OnPropertyChanged(string name)
            {
                if (PropertyChanged != null)
                    this.PropertyChanged(this, new PropertyChangedEventArgs(name));
            }
        }
//给DataGrid绑定要显示的数据源
        Datagrid_data[] Datagrid_V1 = new Datagrid_data[8]//定义数据源
        {
               new Datagrid_data(){ Datagrid_Content = "温度点1压力值", Datagrid_Pre1 = "0",Datagrid_Pre2 = "0",Datagrid_Pre3 = "0",Datagrid_Pre4 = "0",Datagrid_Pre5 = "0" },
               new Datagrid_data(){ Datagrid_Content = "温度点1电阻值",  Datagrid_Pre1 = "0",Datagrid_Pre2 = "0",Datagrid_Pre3 = "0",Datagrid_Pre4 = "0",Datagrid_Pre5 = "0" },
               new Datagrid_data(){ Datagrid_Content = "温度点2压力值", Datagrid_Pre1 = "0",Datagrid_Pre2 = "0",Datagrid_Pre3 = "0",Datagrid_Pre4 = "0",Datagrid_Pre5 = "0" },
               new Datagrid_data(){ Datagrid_Content = "温度点2电阻值",  Datagrid_Pre1 = "0",Datagrid_Pre2 = "0",Datagrid_Pre3 = "0",Datagrid_Pre4 = "0",Datagrid_Pre5 = "0" },
               new Datagrid_data(){ Datagrid_Content = "温度点3压力值", Datagrid_Pre1 = "0",Datagrid_Pre2 = "0",Datagrid_Pre3 = "0",Datagrid_Pre4 = "0",Datagrid_Pre5 = "0" },
               new Datagrid_data(){ Datagrid_Content = "温度点3电阻值",  Datagrid_Pre1 = "0",Datagrid_Pre2 = "0",Datagrid_Pre3 = "0",Datagrid_Pre4 = "0",Datagrid_Pre5 = "0" },
               new Datagrid_data(){ Datagrid_Content = "温度点4压力值", Datagrid_Pre1 = "0",Datagrid_Pre2 = "0",Datagrid_Pre3 = "0",Datagrid_Pre4 = "0",Datagrid_Pre5 = "0" },
               new Datagrid_data(){ Datagrid_Content = "温度点4电阻值",  Datagrid_Pre1 = "0",Datagrid_Pre2 = "0",Datagrid_Pre3 = "0",Datagrid_Pre4 = "0",Datagrid_Pre5 = "0" },
        };

​ DataGrid_Measure1.ItemsSource = Datagrid_V1;//Datagrid_V的数据显示到datagrid里面去

(2)修改要显示的内容

 //定义压力变送器三维数组
public float[, ,] Array_V = new float[16, 8, 5];//用于存放16个表格内的数据,(压力变送器的编号,行数,列数)
 //跟新完到第1个表格
            for (int i = 0; i < 8; i++)//按行列更新数值,i更新每一列,Datagrid_Pre x跟新每一行的数值
            {
                Datagrid_V1[i].Datagrid_Pre1 = Array_V[0,i, 0].ToString();
                Datagrid_V1[i].Datagrid_Pre2 = Array_V[0,i, 1].ToString();
                Datagrid_V1[i].Datagrid_Pre3 = Array_V[0,i, 2].ToString();
                Datagrid_V1[i].Datagrid_Pre4 = Array_V[0,i, 3].ToString();
                Datagrid_V1[i].Datagrid_Pre5 = Array_V[0,i, 4].ToString();

            }

三、复杂使用

 

参考:https://www.cnblogs.com/qq247039968/p/4062302.html

WPF自定义DataGrid控件是通过继承现有的DataGrid类,并在其基础上进行修改和扩展来实现的。 自定义DataGrid控件的步骤如下: 1. 创建一个自定义的类,继承自DataGrid。例如,可以命名为CustomDataGrid。 2. 在CustomDataGrid,可以添加额外的属性、依赖属性或附加属性,用于自定义DataGrid控件的特定行为或外观。 3. 重写或扩展DataGrid的现有方法、事件和样式,以满足自定义需求。例如,可以重写OnApplyTemplate()方法以应用自定义样式。 4. 根据需要,可以添加新的功能或控件,例如自定义列、单元格、行、排序、筛选、分页等等。 5. 在CustomDataGrid,可以通过编写自定义的模板(Template)来修改DataGrid的外观。例如,可以通过修改DataGrid的ControlTemplate来改变整个DataGrid显示风格。 6. 编写完自定义类后,可以在XAML使用自定义DataGrid控件,通过添加命名空间引用并将CustomDataGrid作为一个控件使用。可以设置自定义属性、事件和样式,达到期望的效果。 通过自定义DataGrid控件,可以根据实际需求对其进行扩展和修改,以满足特定的业务需求。由于WPF提供了强大的样式、模板和继承机制,因此可以轻松地自定义DataGrid控件,并且可以实现高度的灵活性和可扩展性。这样,可以根据项目的需求和用户的喜好来创建独特的、具有个性化的DataGrid控件
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值