参考:https://blog.csdn.net/kenjianqi1647/article/details/89883907,https://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数据结构在前端被写死,如果存在很多张表的话,就需要对应数量的前端代码