WPF -> DataGrid
wpf
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
的集合。每个元素都具有 Name
、Age
和 Gender
属性,这些属性分别绑定到了 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下载:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)