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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐