当前位置:   article > 正文

WPF--DataGrid控件使用_wpf griddata

wpf griddata

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

在这里插入图片描述

            </TabItem>
            <TabItem Header="Message" />
            <TabItem Header=" " />
            <TabItem Header=" "/>
            <TabItem Header=" " />
            <TabItem Header=" " />
            <TabItem Header=" " />
        </TabControl>
    </Grid>


	private string name;
	/// <summary>
	/// 名字
	/// </summary>
	public string Name
	{
		get => name;
		set
		{
			name = value;
			OnPropertyChanged();
		}
	}

	private int number;
	/// <summary>
	/// 数量
	/// </summary>
	public int Number
	{
		get => number;
		set
		{
			number = value;
			OnPropertyChanged();
		}
	}

	private double price;
	/// <summary>
	/// 价格
	/// </summary>
	public double Price
	{
		get => price;
		set
		{
			price = value;
			OnPropertyChanged();
		}
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

三个属性,对应三列,老规矩,写界面和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
        });
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

写好直接运行,看看效果

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

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

    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Name}" Header="名称" />
        <DataGridTextColumn Binding="{Binding Number}" Header="数量" />
        <DataGridTextColumn Binding="{Binding Price}" Header="价格" />
    </DataGrid.Columns>
  • 1
  • 2
  • 3
  • 4
  • 5

运行,

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

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

(如果这是一直对最后一行进行双击后,再切换到其他行,会增加一行),直接设置CanUserAddRows=“False”,让它不能创建行。

OK,接下来设置隔行变色:AlternatingRowBackground=“LightBlue”(设置目标行的颜色),AlternationCount=“2”(设置变色行间隔,最小值为2)

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

<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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

运行结果如图所示
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/582900
推荐阅读