一、基础知识
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();
}
三、复杂使用