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
**************************************************************************************************************
4、效果图
**************************************************************************************************************
5、总结和扩展
SelectionUnit属性可以设置当鼠标点击DataGrid时获得焦点的是一个单元格或一个单元行,该属性会影响获取单元格的列索引。
CanUserAddRows属性设置是否在编辑行后再增加一行空白行,如果使用了数据源绑定,那么建议设置为False。
AutoGenerateColumns属性,如果使用了数据源绑定,那么应设置为False,否则相同的列会重复出现。
**************************************************************************************************************