添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说 新手入门WPF之DataGrid控件(一)[亲测有效] ,希望能够帮助你!!!。

一、DataGrid简单使用

DataGrid的使用其实跟TreeView类似,只不过后台组织的对象结构不同,DataGrid一般不需要递归结构,它绑定的数据源,一个属性就代表一个一列,理解不了没事,我直接上代码。

定义了一个关于水果的对象(这次偷懒了,想着简单介绍下,就没按正规创建工程的方式来了)

		private string name;
		/// <summary>
		/// 名字
		/// </summary>
		public string Name
			get => name;
				name = value;
				OnPropertyChanged();
		private int number;
		/// <summary>
		/// 数量
		/// </summary>
		public int Number
			get => number;
				number = value;
				OnPropertyChanged();
		private double price;
		/// <summary>
		/// 价格
		/// </summary>
		public double Price
			get => price;
				price = value;
				OnPropertyChanged();

 三个属性,对应三列,老规矩,写界面和ViewModel(代码很简单,自己写咯)

        public ObservableCollection<DataGridModel> DataGridModels { get; set; } = new ObservableCollection<DataGridModel>();
        public DataGridViewModel()
            Create();
        private void Create()
            DataGridModels.Add(new DataGridModel()
                Name = "苹果",
                Number = 5,
                Price = 1.5
            DataGridModels.Add(new DataGridModel()
                Name = "香蕉",
                Number = 2,
                Price = 15
            DataGridModels.Add(new DataGridModel()
                Name = "菠萝",
                Number = 3,
                Price = 10

写好直接运行,看看效果

一个对象,对应一行,一个属性,对应一列,跟TreeView每一级对应一个对象类似的,默认的样式有点。。。所以,接下来咱们美化它。

先美化列名成中文 ——>名称、数量、价格(DataGrid下有个Columns是包含所有的列,改列的样式一般也在这里面)

        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Name}" Header="名称" />
            <DataGridTextColumn Binding="{Binding Number}" Header="数量" />
            <DataGridTextColumn Binding="{Binding Price}" Header="价格" />
        </DataGrid.Columns>

嘶,怎么显示两次了。。。 (小问题)看官网发现DataGrids默认自动创建列的,这也就是我们一开始只绑定数据源就显示列的原因,AutoGenerateColumns="False",把这属性设置为False就行了。

接着创建其他的列类型(checkbox、combobox、hyperlink)

 (如果这是一直对最后一行进行双击后,再切换到其他行,会增加一行),直接设置CanUserAddRows="False",让它不能创建行。新手入门WPF之DataGrid控件(一)[亲测有效]_https://bianchenghao6.com/blog__第9张

 OK,接下来设置隔行变色:AlternatingRowBackground="LightBlue"(设置目标行的颜色),AlternationCount="2"(设置变色行间隔,最小值为2)新手入门WPF之DataGrid控件(一)[亲测有效]_https://bianchenghao6.com/blog__第10张

 最后是对行和单元格的样式设置

    <DataGrid.RowStyle>
        <Style TargetType="DataGridRow">
            <Setter Property="Background" Value="SkyBlue" />
        </Style>
    </DataGrid.RowStyle>
    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Foreground" Value="Red" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </DataGrid.CellStyle>

运行结果如图所示 

        这次这个是非常简单的介绍,对应DataGrid中的DataGridTemplateColumn(非常强大)的运用,后面我是打算用个场景来展示DataGrid的应用,这篇文章就算是入门篇吧

        当然,欢迎各位批评指正,谢谢啦新手入门WPF之DataGrid控件(一)[亲测有效]_https://bianchenghao6.com/blog__第12张

        这是我的demo源码:https://github.com/TQtong/DataGridDemo.git