首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF C#使用绑定在DataGrid中显示可观察集合

WPF(Windows Presentation Foundation)是一种用于创建Windows桌面应用程序的UI框架,而C#是一种常用的面向对象编程语言。在WPF中,可以使用绑定(Binding)机制将数据源与UI元素进行关联,实现数据的显示和更新。

在DataGrid中显示可观察集合,可以通过以下步骤实现:

  1. 创建一个可观察集合(ObservableCollection)对象,该对象可以自动通知UI元素数据的变化。
  2. 在XAML中,使用DataGrid控件定义一个表格,设置AutoGenerateColumns属性为True,以自动生成列。
  3. 在XAML中,使用Binding指令将DataGrid的ItemsSource属性绑定到可观察集合对象。
  4. 在XAML中,为每一列定义一个DataGridTextColumn,并使用Binding指令将列与可观察集合中的属性进行绑定。

下面是一个示例代码:

代码语言:txt
复制
<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="DataGrid Binding Example" Height="450" Width="800">
    <Grid>
        <DataGrid ItemsSource="{Binding MyCollection}" AutoGenerateColumns="True">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
                <DataGridTextColumn Header="Age" Binding="{Binding Age}" />
                <!-- 其他列 -->
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

在代码中,需要创建一个名为MyCollection的可观察集合对象,并将其设置为窗口的DataContext属性。这样,XAML中的绑定指令才能找到正确的数据源。

在C#代码中,可以创建一个名为MainWindow的类,并在构造函数中初始化MyCollection,并将其赋值给DataContext属性。

代码语言:txt
复制
using System.Collections.ObjectModel;
using System.Windows;

namespace WpfApp
{
    public partial class MainWindow : Window
    {
        public ObservableCollection<Person> MyCollection { get; set; }

        public MainWindow()
        {
            InitializeComponent();

            MyCollection = new ObservableCollection<Person>();
            MyCollection.Add(new Person { Name = "John", Age = 25 });
            MyCollection.Add(new Person { Name = "Alice", Age = 30 });

            DataContext = this;
        }
    }

    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
}

在上述示例中,我们创建了一个Person类作为可观察集合中的元素类型,该类包含Name和Age属性。在构造函数中,我们初始化了MyCollection,并添加了两个Person对象。

这样,当窗口加载时,DataGrid会自动根据可观察集合中的数据生成对应的行和列,并显示在界面上。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(TBC):https://cloud.tencent.com/product/tbc
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • WPF NET5 Prism8.0的升级指南

    ​ 曾经我以学习的目的写了关于在.NET Core3.1使用Prism的系列文章.NET Core 3 WPF MVVM框架 Prism系列文章索引,也谢谢大家的支持,事实上当初的版本则是Prism7.2.0.1442(7.2)版本,而现在也发布了.NET5和最新的Prism8.0.0.1909(8.0)版本,因此同样的我想将之前的Prism Demo项目可以升级到最新,写这篇文章的目的是自己也能学习一番,而更多的是回答那些在我Prism系列文章下面留下的我认为可以拿来一讲一些问题,而有些问题我则是水平有限回答不了(真的不是不想回答)  然后我拿之前的Prism Demo项目,WPF从.NET Core3.1升级到.NET 5其实非常简单,无脑修改项目的TargetFramework为net5.0-windows就行了,但是当Prism7.2升级到Prism8.0,我发现build的时候报了很多错误,那么让我们来看看究竟Prism8.0更新了些啥

    04

    WPF Binding学习(四) 绑定各种数据源

    在这里我们使用了ListView控件和GridView控件来显示数据,这两个控件从表面来看应该属于同一级别的控件。实际上并非如此!ListView是ListBox的派生类,而GridView是ViewBase的派生类,ListView中的View是一个ViewBase对象,所以,GridView可以做为ListView的View来使用而不能当作独立的控件来使用。这里使用理念是组合模式,即ListView由一个View,但是至于是GridVIew还是其它类型的View,由程序员自己选择。其次,GridView的内容属性是Columns,这个属性是GridViewColumnCollection类型对象。因为XAML支持对内容属性的简写,可以省略<GridView.Columns>这层标签,直接在GridView内部定义<GridViewColumn>对象,GridViewColumn中最重要的一个属性是DisplayBinding(类型是BindingBase),使用这个属性可以指定这一列使用什么样的Binding去关联数据-----这与ListBox有些不同,ListBox使用的是DisplayMemberPath属性(类型是String)。如果想用更复杂的结构来表示这一标题或数据,则可为GridViewColumn设置Head Template和Cell Template,它们的类型都是DataTemplate

    03
    领券