使用DatGrid简单的绑定一个数据模型

参考:https://blog.csdn.net/kenjianqi1647/article/details/89883907https://blog.csdn.net/colingg/article/details/80614257
wpf datagrid简单显示数据
XAML

<Window x:Class="WpfApplication8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:core="clr-namespace:System;assembly=mscorlib"
        xmlns:local="clr-namespace:WpfApplication8"
        Title="MainWindow" Height="350" Width="525"  Loaded="MainWindowLoaded">
    <Window.Resources>
        <ObjectDataProvider x:Key="SexualEnum" MethodName="GetValues" ObjectType="{x:Type core:Enum}">
            <ObjectDataProvider.MethodParameters>
                <x:Type Type="local:sexual_enum"/>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>

    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="36*"/>
            <RowDefinition Height="283*"/>
        </Grid.RowDefinitions>
      
        <DataGrid x:Name="DATA_GRID" ItemsSource="{Binding}" AutoGenerateColumns="False" Grid.Row="1" RowHeaderWidth="0" CanUserAddRows="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="姓名" Binding="{Binding name}"/>
                <DataGridTextColumn Header="年龄" Binding="{Binding age}"/>
                <DataGridComboBoxColumn Header="性别" SelectedItemBinding="{Binding sexual}" ItemsSource="{Binding Source={StaticResource SexualEnum}}"/>
            </DataGrid.Columns>
        </DataGrid>
        <Button x:Name="BTN_CHK_DATA" Content="CheckData" HorizontalAlignment="Left" Margin="432,10,0,0" VerticalAlignment="Top" Width="75" Click="BTN_CHK_DATA_Click"/>
    </Grid>
</Window>

后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication8
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public enum sexual_enum          //XAML中引用的就是这里
    {
        BOY,
        GIRL
    }
    public class people         //类与类之间必须相互独立,不能嵌套
    {
        public string name { get; set; }
        public string age { get; set; }
        public sexual_enum sexual { get; set; }
    }
    public partial class MainWindow : Window
    {
        System.Collections.ObjectModel.ObservableCollection<people> peopleList = new System.Collections.ObjectModel.ObservableCollection<people>();
        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindowLoaded(object sender, RoutedEventArgs e)
        {
            peopleList.Add(new people()
            {
                name = "小明",
                age = "18",
                sexual = sexual_enum.BOY,
            });
            peopleList.Add(new people()
            {
                name = "小红",
                age = "18",
                sexual = sexual_enum.GIRL
            });
            peopleList.Add(new people()
            {
                name = "小白",
                age = "18",
                sexual = sexual_enum.GIRL
            });
            peopleList.Add(new people()
            {
                name = "小黑",
                age = "18",
                sexual = sexual_enum.GIRL
            });
            DATA_GRID.ItemsSource = peopleList;// DATA_GRID可替换为((this.FindName("DATA_GRID")) as DataGrid)
        }

        private void BTN_CHK_DATA_Click(object sender, RoutedEventArgs e)
        {
            string txt = "";
            foreach (people peo in peopleList)
            {
                txt += peo.name;
                txt += peo.age;
                txt += peo.sexual.ToString();
                txt += "\r\n";

            }

            MessageBox.Show(txt);
        }
    }
}


另一种写法
XAML

<Window x:Class="WpfApplication8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"  Loaded="MainWindowLoaded">
       <Grid>
        <DataGrid x:Name="groupInformationShow" HorizontalAlignment="Left" Height="322" VerticalAlignment="Top" Width="520" Margin="-3,-2,0,0" AutoGenerateColumns="False" RowHeaderWidth="0">
            <DataGrid.AlternatingRowBackground>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <LinearGradientBrush.RelativeTransform>
                        <TransformGroup>
                            <ScaleTransform CenterY="0.5" CenterX="0.5"/>
                            <SkewTransform CenterY="0.5" CenterX="0.5"/>
                            <RotateTransform CenterY="0.5" CenterX="0.5" Angle="90"/>
                            <TranslateTransform/>
                        </TransformGroup>
                    </LinearGradientBrush.RelativeTransform>
                    <GradientStop Color="White" Offset="0"/>
                    <GradientStop Color="#FF5BB0F7" Offset="1"/>
                </LinearGradientBrush>
            </DataGrid.AlternatingRowBackground>

            <DataGrid.Columns>
                <!-- <DataGridTextColumn Header="序号" Width ="45" FontSize="12" Binding="{Binding show_index}"  ElementStyle="{StaticResource contentCenterStyle}" /> -->
                <DataGridTextColumn Header="组号" Width ="55" FontSize="14" Binding="{Binding GroupNumber}" />
                <DataGridTextColumn Header="时间" Width ="150" FontSize="14" Binding="{Binding Time}"/>

            </DataGrid.Columns>
        </DataGrid>

      
    </Grid>
</Window>

后台代码
这些都是写在namespace中

  public struct GrourpValue
    {
        public int GroupNumber { get; set; }
        public string Time { get; set; }
    }

    public partial class MainWindow : Window
    {
        //System.Collections.ObjectModel.ObservableCollection<people> peopleList = new System.Collections.ObjectModel.ObservableCollection<people>();
        public MainWindow()
        {
            InitializeComponent();
        }

      
        public void dataBinding()
        {
            List<object> aList = new List<object>();
            GrourpValue ps1 = new GrourpValue();//单行数据
            ps1.GroupNumber = 111;
            ps1.Time = "20180907";
            aList.Add(ps1);
            ps1.GroupNumber = 131;
            ps1.Time = "20180906";
            aList.Add(ps1);
            groupInformationShow.ItemsSource = aList;
            groupInformationShow.AutoGenerateColumns = false;//禁止自动添加列
            groupInformationShow.CanUserAddRows = false;//禁止自动添加行
        }

        private void MainWindowLoaded(object sender, RoutedEventArgs e)
        {
            dataBinding();
        }

第三种
XAML

  <Grid>
        <DataGrid Name="DG1" ItemsSource="{Binding}" AutoGenerateColumns="False" >
            <DataGrid.Columns>
                <DataGridTextColumn Header="Column1"  Binding="{Binding FirstName}"/>
                <DataGridTextColumn Header="Column2" Binding="{Binding LastName}" />
                <DataGridHyperlinkColumn Header="Column3" Binding="{Binding Email}"  />
                <DataGridCheckBoxColumn Header="Column4" Binding="{Binding IsMember}" />
            </DataGrid.Columns>
        </DataGrid>

    </Grid>

后台代码

 public class DataGridCustomer
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public Uri Email { get; set; }
        public bool IsMember { get; set; }
    }

   
          
    public partial class MainWindow : Window
    {
       ObservableCollection<DataGridCustomer> list =new ObservableCollection<DataGridCustomer>();//
        public MainWindow()
        {
            InitializeComponent();
        }
            
        private void MainWindowLoaded(object sender, RoutedEventArgs e)
        {
            list.Add(new DataGridCustomer() { FirstName = "Guo", LastName = "Liang", Email = new Uri("http://gl925@139.com"), IsMember = true });
            list.Add(new DataGridCustomer() { FirstName = "Zhang", LastName = "Peng", Email = new Uri("http://Spawn@126.com"), IsMember = true });
            list.Add(new DataGridCustomer() { FirstName = "Wang", LastName = "WT", Email = new Uri("http://love@126.com"), IsMember = true });
            list.Add(new DataGridCustomer() { FirstName = "Lv", LastName = "Yang", Email = new Uri("http://Fat@139.com"), IsMember = false });
            DG1.ItemsSource = list;
        }

      
    }

缺点:
DataGrid内部只有DataGrid预设的几种数据类型,没有办法扩展。
只有显示功能,没有对DataGrid中的数据有任何操作
DataGrid数据结构在前端被写死,如果存在很多张表的话,就需要对应数量的前端代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值