WPF 控件专题 DataGrid 控件详解


1、DataGrid 介绍

DataGrid 表示用于在可自定义的网格中显示数据的控件。

**************************************************************************************************************

2、常用属性介绍,更多属性详见 MSDN DataGrid

ActualHeight/ActualWidth:元素呈现的高度/宽度。 CanSelectMultipleItems:获取或设置一个值,该值指示是否可以一次选择 MultiSelector 中的多个项。

CanUserAddRows:获取或设置一个值,该值指示用户是否可在 DataGrid 中添加新行。

CanUserDeleteRows:获取或设置一个值,该值指示用户是否可从 DataGrid 中删除行。

CanUserReorderColumns:获取或设置一个值,该值指示用户能否通过用鼠标拖动列标题来更改列的显示顺序。

CanUserResizeColumns/CanUserResizeRows:获取或设置一个值,该值指示用户是否可使用鼠标调整列宽/高度。

CanUserSortColumns:获取或设置一个值,该值指示用户能否通过单击列标题对列进行排序。 ColumnHeaderHeight:获取或设置列标题行的高度。 Columns:获取一个集合,该集合包含 DataGrid 中的所有列。

ColumnWidth:获取或设置 DataGrid 中列和标题的标准宽度和大小调整模式。 CurrentCell:获取或设置具有焦点的单元格。CurrentColumn:获取或设置包含当前单元格的列。

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

DisplayMemberPath:获取或设置源对象上的值的路径,以用作对象的可视表示形式。

HeadersVisibility:获取或设置用于指定行和列标题可见性的值。 HorizontalGridLinesBrush:获取或设置用于绘制水平网格线的画笔。

HorizontalScrollBarVisibility/VerticalScrollBarVisibility:水平/垂直滚动条可见性。 RowBackground:获取或设置行背景的默认画笔。RowHeaderWidth:获取或设置行标题列的宽度。

RowHeight:获取或设置所有行的建议高度。SelectedCells:获取当前选定单元格的列表。

SelectedIndex:获取或设置当前选择中第一项的索引,如果选择为空,则返回负一(-1)。

SelectedItem:获取或设置当前选择中的第一项,或者,如果选择为空,则返回 null。

SelectedItems:获取在 MultiSelector 中选定的项。

SelectedValue:获取或设置通过使用 SelectedItem 而获取的 SelectedValuePath 的值。

SelectedValuePath:获取或设置用于从 SelectedValue 获取 SelectedItem 的路径。

SelectionMode:获取或设置一个值,该值指示如何在 DataGrid 中选择行和单元格。

SelectionUnit:获取或设置一个值,该值指示是否可以在 DataGrid 中选择行、单元格或两者。 Items:获取用于生成 ItemsControl 的内容的集合。ItemTemplate:获取或设置用来显示每个项的 DataTemplate。 ItemsPanel:获取或设置模板,该模板定义对项的布局进行控制的面板。 ItemsSource:获取或设置用于生成 ItemsControl 的内容的集合。

SnapsToDevicePixels:获取或设置一个值,该值确定在呈现过程中,此元素的呈现是否应使用特定于设备的像素设置。

**************************************************************************************************************

3、具体示例代码

DataGrid 样式资源

后台定义绑定数据

public partial class MainWindow : Window, System.ComponentModel.INotifyPropertyChanged

{

public MainWindow()

{

InitializeComponent();

this.DataContext = this;

InitalData();

}

}

public partial class MainWindow

{

private void InitalData()

{

NationalityInfo.Add(new Nationality() { Name = "中国", Value = "Chian" });

NationalityInfo.Add(new Nationality() { Name = "俄罗斯", Value = "Russia" });

NationalityInfo.Add(new Nationality() { Name = "朝鲜", Value = "North Korea" });

NationalityInfo.Add(new Nationality() { Name = "巴基斯坦", Value = "Pakistan" });

NationalityInfo.Add(new Nationality() { Name = "阿富汗", Value = "Afghanistan" });

NationalityInfo.Add(new Nationality() { Name = "土耳其", Value = "Turkey" });

NationalityInfo.Add(new Nationality() { Name = "土耳其2", Value = "Turkey2" });

NationalityInfo.Add(new Nationality() { Name = "土耳其3", Value = "Turkey3" });

NationalityInfo.Add(new Nationality() { Name = "土耳其4", Value = "Turkey4" });

NationalityInfo.Add(new Nationality() { Name = "土耳其5", Value = "Turkey5" });

}

private List nationalityInfo = new List();

public List NationalityInfo

{

get { return nationalityInfo; }

set { nationalityInfo = value; OnPropertyChanged("NationalityInfo"); }

}

public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(string propertyName)

{

if (PropertyChanged != null)

{

PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

}

}

}

使用DataGrid

HorizontalAlignment="Left">

**************************************************************************************************************

4、效果图

**************************************************************************************************************

5、总结和扩展

SelectionUnit属性可以设置当鼠标点击DataGrid时获得焦点的是一个单元格或一个单元行,该属性会影响获取单元格的列索引。

CanUserAddRows属性设置是否在编辑行后再增加一行空白行,如果使用了数据源绑定,那么建议设置为False。

AutoGenerateColumns属性,如果使用了数据源绑定,那么应设置为False,否则相同的列会重复出现。

**************************************************************************************************************

世俱杯:大巴黎强势 拜仁独大 D组强弱分明
公务行app