> 文章列表 > WPF DataGrid

WPF DataGrid

WPF DataGrid

wpf datagrid属性:

WPF DataGrid 是一个多功能的控件,用于在表格视图中显示和编辑数据。以下介绍 DataGrid 常用的一些属性:

1.AutoGenerateColumns:表示是否自动生成列。如果设置为 true,则 DataGrid 将自动按列名生成列,并将列绑定到集合中的属性。默认值为 true。
2.ItemsSource:表示 DataGrid 中显示的数据源。可以直接绑定到一个集合对象,也可以手动创建列并绑定到集合中的属性。
3.CanUserAddRows、CanUserDeleteRows 和 CanUserResizeRows:表示用户能否添加、删除或调整行大小。
4.CanUserSortColumns、CanUserResizeColumns 和 CanUserReorderColumns:表示用户能否对列进行排序、调整大小或重新排序。
5.SelectionMode 和 SelectionUnit:表示选择模式和选择单位。SelectionMode 属性决定是否允许选择多个项,而 SelectionUnit 属性决定选择的单位是行还是单元格。
6.AlternatingRowBackground 和 Background:分别表示交替行背景颜色和 DataGrid 的背景颜色。
7.RowHeaderWidth 和 ColumnHeaderHeight:分别表示行标题的宽度和列标题的高度。
8.GridLinesVisibility:表示单元格之间的网格线可见性。
9.RowStyle 和 CellStyle:分别表示行和单元格的样式。可以通过设置 Style 属性来自定义样式。
10.IsReadOnly:表示 DataGrid 是否为只读。
11.ClipboardCopyMode:表示复制到剪贴板的内容类型。可选值包括 None、ExcludeHeader、IncludeHeader 和 All。
12.HorizontalScrollBarVisibility 和 VerticalScrollBarVisibility:表示水平和垂直滚动条的可见性。
13.CanUserResizeRows 和 RowHeight:分别表示用户是否可以调整行大小和行高度。
14.FrozenColumnCount:表示 DataGrid 最左边的几列将被锁定,不能水平滚动。
以上是 DataGrid 常用的一些属性,使用这些属性可以对 DataGrid 进行各种自定义设置,实现所需的数据呈现和交互行为。

wpf datagrid事件:

WPF DataGrid 是一个多功能的控件,除了常用的属性外,还提供了一些事件来实现交互和响应用户操作。以下是 DataGrid 常用的一些事件:
1.AutoGeneratingColumn:在自动生成列时发生。可以使用此事件修改生成的列。
2.BeginningEdit 和 CellEditEnding:分别表示开始编辑单元格和结束编辑单元格。可以使用这些事件对编辑进行验证或其他处理。
3.Sorting:在排序前发生。可以使用此事件取消排序,或根据需要修改排序方式。
4.SelectionChanged:在选择内容更改时发生。可以使用此事件对选定的行或单元格进行操作。
5.PreviewKeyDown 和 KeyDown:分别表示键被按下之前和之后。可以使用这些事件捕获特定键的按下事件,并执行相应的操作。
6.MouseDoubleClick 和 PreviewMouseDoubleClick:分别表示鼠标双击之前和之后。可以使用这些事件捕获鼠标双击事件,并执行相应的操作。
7.CurrentCellChanged:在当前单元格更改时发生。可以使用此事件对当前单元格进行操作。
8.LoadingRow:在每一行加载时发生。可以使用此事件对行进行初始化或其他处理。
9.UnloadingRow:在每一行卸载时发生。可以使用此事件对行进行资源释放或其他处理。
10.RowEditEnding:当行编辑完成并退出编辑模式时发生。可以使用此事件对行数据进行验证或其他处理。
以上是 DataGrid 常用的一些事件,可以根据需要使用这些事件实现交互和响应用户操作。

wpf datagrid布局示例:

<Grid><Grid.RowDefinitions><RowDefinition Height="Auto" /><RowDefinition Height="*" /><RowDefinition Height="50" /></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="Auto" /><ColumnDefinition Width="*" /><ColumnDefinition Width="Auto" /></Grid.ColumnDefinitions><!-- 第一行第一列 --><TextBlock Grid.Row="0" Grid.Column="0"Text="姓名:" FontWeight="Bold" Margin="5"/><!-- 第一行第二列 --><TextBox Grid.Row="0" Grid.Column="1"Margin="5" MinWidth="200"/><!-- 第一行第三列 --><Button Grid.Row="0" Grid.Column="2"Content="搜索" Margin="5"/><!-- 第二行 --><DataGrid Grid.Row="1" Grid.ColumnSpan="3"ItemsSource="{Binding People}"AutoGenerateColumns="False"Margin="5"/><!-- 第三行 --><StatusBar Grid.Row="2" Grid.ColumnSpan="3"Background="#FFD9EDF7"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="*" /><ColumnDefinition Width="Auto" /></Grid.ColumnDefinitions><StatusBarItem Grid.Column="0"><TextBlock Text="Ready"/></StatusBarItem><StatusBarItem Grid.Column="1"><ProgressBar  Width="100" IsIndeterminate="True"/></StatusBarItem></Grid></StatusBar>
</Grid>
这个示例中的 Grid 布局包含了三行和三列。第一行包含了一个 Label、一个 TextBox 和一个 Button;第二行包含了一个 DataGrid 控件,它跨越了所有三列;第三行包含了一个 StatusBar,并使用 ItemsPanelTemplate 将其分为两个部分:左侧是一个 TextBlock 控件,右侧是一个 ProgressBar 控件。

下面是一个简单的 WPF DataGrid 绑定数据源的示例:

<Window x:Class="DataGridBindingExample.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"><Grid><DataGrid ItemsSource="{Binding People}"><DataGrid.Columns><DataGridTextColumn Header="Name" Binding="{Binding Name}" /><DataGridTextColumn Header="Age" Binding="{Binding Age}" /><DataGridTextColumn Header="Gender" Binding="{Binding Gender}" /></DataGrid.Columns></DataGrid></Grid>
</Window>

这个示例中的 DataGrid 绑定了一个名为 People 的集合。每个元素都具有 NameAgeGender 属性,这些属性分别绑定到了 DataGrid 的三列中。

在代码中,我们需要设置 DataContext 属性来指定数据源。在此示例中,我们可以在窗口构造函数中设置 DataContext 属性,如下所示:

public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();DataContext = new ViewModel();}
}

在 ViewModel 中,我们可以创建一个名为 People 的 ObservableCollection 来存储人员信息,并将其作为 DataGrid 的数据源。ViewModel 类的代码如下所示:

public class ViewModel
{public ObservableCollection<Person> People { get; set; }public ViewModel(){People = new ObservableCollection<Person>{new Person { Name = "John Doe", Age = 42, Gender = "Male" },new Person { Name = "Jane Doe", Age = 39, Gender = "Female" },new Person { Name = "Sammy Doe", Age = 13, Gender = "Non-Binary" }};}
}public class Person
{public string Name { get; set; }public int Age { get; set; }public string Gender { get; set; }
}

这个 ViewModel 可以在应用程序中的其他地方重复使用,而 DataGrid 只需要在 XAML 中进行绑定即可。

在 WPF 中使用 DataGrid 显示 SQL Server 数据库表数据

 <DataGrid Name="dataGrid" Grid.Row="1" Grid.ColumnSpan="3"ItemsSource="{Binding}"AutoGenerateColumns="False"Margin="5"><DataGrid.Columns><DataGridTextColumn Header="code" Binding="{Binding code}" /><DataGridTextColumn Header="name" Binding="{Binding name}" /><DataGridTextColumn Header="id" Binding="{Binding id}" /></DataGrid.Columns></DataGrid>

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 wpf22
{/// <summary>/// Page1.xaml 的交互逻辑/// </summary>public partial class Page1 : Page{public Page1(){InitializeComponent();}private void Page_Loaded(object sender, RoutedEventArgs e){dataGrid.ItemsSource = SqlDBHelper2.GetDataSet("select code,name,id from stockData;").DefaultView;}}
}

demo下载:

https://download.csdn.net/download/caoyanchao1/87701447