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 


	
	
		
			
			
			
			
		
	

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

4、效果图

WPF 控件专题 DataGrid 控件详解_第1张图片

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

5、总结和扩展

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

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

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

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

你可能感兴趣的:(#,WPF,控件专题,wpf,WPF,DataGrid,DataGrid,DataGrid,控件详解)