首页 > 其他分享 > WPF入门教程系列二十六——DataGrid使用示例(3)

WPF入门教程系列二十六——DataGrid使用示例(3)

时间:2023-05-28 12:11:06浏览次数:56  
标签:入门教程 示例 Windows 绑定 System DataGrid using WPF

WPF入门教程系列目录 WPF入门教程系列二——Application介绍

WPF入门教程系列三——Application介绍(续)

WPF入门教程系列四——Dispatcher介绍

WPF入门教程系列五——Window 介绍

WPF入门教程系列十一——依赖属性(一) WPF入门教程系列十五——WPF中的数据绑定(一)

 

五、DataGrid的DataGridComboBoxColumn列的绑定方式

  在上一篇文章的示例中,存在一个问题,在点击“刷新”按钮之后,城市这个ComboBox列的数据没有显示。

DataGridComboBoxColumn列如果要填充数据,首先要设置列的ItemsSouce属性,而且这个属性对于要绑定的数据源有以下的要求:

  • 1、静态资源。有关更多信息,请参见 StaticResource 标记扩展。
  • 2、x: 静态代码实体。有关更多信息,请参见 x:Static 标记扩展。
  • 3、ComboBoxItem 类型的内联集合。

1.  在使用DataGrid的时候,有时候需要使某些列为ComboBox,这时自然想到使用DataGridComboBoxColumn,但是如果使用的是ItemsSource数据绑定后台的对象,就会发现,这根本就不能用。

2.在Visual Studio 2022中打开MainWindow.cs文件,添加下拉框的绑定代码。具体代码如下:

   private void BindDrp()
        {
            cboCity.ItemsSource=GetCitys();
        }

        private void btnRefresh_Click(object sender, RoutedEventArgs e)
        {

            BindGrid();
            BindDrp();
        } 

3. 在Visual Studio 2022中打开MainWindow.xaml文件,对DataGridComboBoxColumn进行了数据绑定。具体代码如下。

<DataGridComboBoxColumn Header="城市" Width="120"  x:Name="cboCity" ClipboardContentBinding="{x:Null}"
SelectedValuePath="Code" SelectedValueBinding="{Binding Path=CityCode,UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Name" SelectedItemBinding="{x:Null}" />

       其中SelectedValuePath与DisplayMemberPath是指将绑定到DataGridComboBoxColumn列上的类中的哪个属性。例如上面的代码,code属性做为value值,Name属性做为在界面上呈现。

      通过SelectedValueBinding绑定的值,这个值由SelectedValuePath 所绑定的属性确定,呈现绑定对象上的属性。

      例如上述代码中,将SelectedValueBinding绑定到CityCode,当属性绑定发生变化时。通过SelectedValuePath=Code,表示我们通过Code这个关键字进行搜索,搜索绑定对象的Code值是否与CityCode值相同,相同返回City对象,而City对象中有Code属性和Name属性,并以Name属性进行显示。

4. 在Visual Studio 2022中按F5键,运行WFP应用程序,使用鼠标左键,点击“刷新”按钮,DataGrid中的城市列默认显示正确的绑定数据,如下图。

 

5. 下面是全部完成之后的实际的XAML代码。

<Window x:Class="WpfGridDemo.NET7.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfGridDemo.NET7"
        mc:Ignorable="d"
        Title="MainWindow" Height="600" Width="960">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="100"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>

            <RowDefinition Height="25"></RowDefinition>
        </Grid.RowDefinitions>

        <DataGrid x:Name="gridArea" Grid.Row="1" d:ItemsSource="{d:SampleData ItemCount=5}" AutoGenerateColumns="False"
HorizontalAlignment="Left" VerticalAlignment="Top"> <DataGrid.Columns> <DataGridComboBoxColumn Header="城市" Width="120" x:Name="cboCity" ClipboardContentBinding="{x:Null}"
SelectedValuePath="Code" SelectedValueBinding="{Binding Path=CityCode,UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Name" SelectedItemBinding="{x:Null}" /> <DataGridTextColumn Header="县区镇" Width="*" Binding="{Binding Name}" ClipboardContentBinding="{x:Null}"/> <DataGridTextColumn Header="邮编" Width="100" Binding="{Binding Code}" ClipboardContentBinding="{x:Null}"/> <DataGridTextColumn Header="创建时间" Width="160" Binding="{Binding Created}" ClipboardContentBinding="{x:Null}"/> <DataGridTextColumn Header="更新时间" Width="160" Binding="{Binding Updated}" ClipboardContentBinding="{x:Null}"/> </DataGrid.Columns> </DataGrid> <WrapPanel Grid.Row="2"> <Button x:Name="btnRefresh" Height="22" Width="120" Click="btnRefresh_Click">刷新</Button> <Button x:Name="btnSave" Height="22" Width="120">保存</Button> </WrapPanel> </Grid> </Window>

6.MainWidow.cs的全部代码,如下

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;
using WpfGridDemo.NET7.Entitys;
 
namespace WpfGridDemo.NET7
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        GridDbContext db = new GridDbContext();

        protected List<City> GetCitys()
        {
            List<City> list = db.City.ToList<City>();

            return list;
 
        }
 
 
        protected List<Area> GetAreas()
        {
            List<Area> list = db.Area.ToList<Area>();
            return list;
        }
 
        protected List<Province> GetProvinces()
        {
            List<Province> list = db.Province.ToList<Province>();

            return list;

        }

        private void BindGrid()
        {
            gridArea.ItemsSource = GetAreas();
        }

        private void BindDrp()
        {
            cboCity.ItemsSource=GetCitys();
        }

        private void btnRefresh_Click(object sender, RoutedEventArgs e)
        {

            BindGrid();
            BindDrp();
        }
    }
}

 

标签:入门教程,示例,Windows,绑定,System,DataGrid,using,WPF
From: https://www.cnblogs.com/chillsrc/p/17438067.html

相关文章

  • java——微服务——spring cloud——Eureka——插叙——服务访问——Demo——示例演示
                 user查询:             order订单查询:            user服务,查询user对象:            查询order对象:            ......
  • SQL(Structured Query Language)介绍及查询示例
    SQL(StructuredQueryLanguage)是结构化查询语言的缩写,它是一种专门用于操作关系型数据库的编程语言。SQL可以用于数据的存储、查询、更新、删除等常见操作,并且是目前世界上最流行的关系型数据库操作语言。SQL的主要特点包括:1.简单易学:SQL的语法清晰简单,易于学习和使用。2.......
  • C# 中的字符串——新增功能,通过代码示例进行解释
    我们在代码中使用的大部分内容都是字符串。让我们看一下C#字符串的一些新功能……包括C#11中新增的原始字符串文字和原始字符串插值。原始字符串字面量可以简单灵活地构建复杂的多行字符串,包括JSON。无需逃避。对应视频教程:https://www.java567.com/open/1在本文中,我们将......
  • React18+TS+NestJS+GraphQL全栈开发示例
    React18+TS+NestJS+GraphQL全栈开发示例全栈开发是指一位开发人员可以熟练掌握前端、后端和数据库等多个领域的技术,能够完整地开发一个应用程序。在本文中,我们将介绍如何使用React18+TS+NestJS+GraphQL这个技术组合来进行全栈开发。技术选型在开始开发之前,我们需要选择合适的技术栈......
  • 全栈开发高性能后台及客户端示例
    全栈开发高性能后台及客户端示例全栈开发是指一位开发人员可以熟练掌握前端、后端和数据库等多个领域的技术,能够完整地开发一个应用程序。在这篇文章中,我们将介绍如何使用全栈技术来开发一个高性能的Web应用程序,包括后台和客户端。后台架构设计后台是Web应用程序的核心部分,它负责处......
  • net7下的tcpip示例
    2023-05-27测试,直接用百度文心一言搜索的,结果出来的代码能运行得通,不错不错服务器端: usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Text;namespacetcpipdemo_server;classProgram{staticvoidMain(string[]args){//创建TCP......
  • winfrom中对datagridview控件更新数据并添加到数据库中
    第一种方法:双击鼠标直接修改数据同步到数据库1、首先在app.config配置数据库<?xmlversion="1.0"encoding="utf-8"?><configuration>   <connectionStrings>      <addname="local"         connectionString="DataSource=DESKTOP-H......
  • DataGridView完美解决复制粘贴功能
    //在DataGridView的PreviewKeyDown事件中privatevoiddataGridView1_PreviewKeyDown(objectsender,PreviewKeyDownEventArgse){if(e.Control&&e.KeyCode==Keys.V)//判断是否按下ctrl+v{Paste(dataGridView1,"",0,false);//粘贴代码}}粘贴,行数和列数不......
  • Simple Factory Pattern 简单工厂模式简介与 C# 示例【创建型】【设计模式来了】
     〇、简介1、什么是简单工厂模式?一句话解释:  客户类和工厂类严格分工,客户类只需知道怎么用,处理逻辑交给工厂类。简单工厂模式(SimpleFactoryPattern)是日常开发中常用的设计模式。其是一种简单的创建型模式,它通过一个工厂类来创建对象,客户端只需要知道如何使用工厂类,而不需......
  • Shopee|Lazada电商平台api接口,接入获取商品评论|根据关键词取商品列表API说明示例
     Shopee和Lazada是东南亚地区广受欢迎的电商平台。它们的模式非常类似,都是以C2C(消费者到消费者)、B2C(企业到消费者)和O2O(线上到线下)为主要销售模式。用户可以在平台上购买商品或者将自己的商品出售给其他用户。这些平台提供了较高的使用便利性,比如支持多种支付方式、商品搜索......