首页 > 其他分享 >一起搭WPF之列表数据绑定

一起搭WPF之列表数据绑定

时间:2024-08-27 16:25:58浏览次数:13  
标签:DataContext Name 绑定 列表 2.2 WPF 属性

一起搭WPF之列表数据绑定


1 前言

之前已经简单介绍了列表的大致设计,在设计完列表界面后,我们可以开展列表的数据绑定,在前端显示我们的数据,对列表进行数据输入。
那么让我们开始大干一场吧!


2 数据绑定

2.1 前端

在前端DataGrid的ItemsSource就绑定好后台定义的数据,要相互对应。同时这个ItemsSource就是多个类的集合,类的属性就再绑定给不同的列表元素中。这里定义Name、ClothTpye等属性。

<DataGrid ItemsSource="{Binding DataList}"   ScrollViewer.VerticalScrollBarVisibility="Hidden" >
   <DataGrid.Columns>
       <DataGridTextColumn Header="名称" Width="*" Binding="{Binding Name}"/>
       <DataGridTextColumn Header="衣服类型" Width="*" Binding="{Binding ClothTpye}"/>
       <DataGridTextColumn Header="颜色" Width="*" Binding="{Binding ClothColor}"/>
       <DataGridTextColumn Header="尺码" Width="*" Binding="{Binding ClothSize}"/>
       <DataGridTextColumn Header="价格" Width="*" Binding="{Binding ClothPrice}"/>

2.2 后端实现

2.2.1 界面后台

在界面的后台.xaml中需要将当前窗口或控件的 DataContext 属性设置为一个新的 DataViewModel 实例。DataContext 是一个依赖属性,它允许子控件继承其父控件的 DataContext。

this.DataContext = new DataViewModel();

DataContext 属性用于绑定UI元素和数据源,将数据模型与视图(UI)连接起来。

2.2.2 模型与逻辑

我们在模型中,定义一个属性,this.NotifyChanged();实现了 INotifyPropertyChanged 接口,需要 OnPropertyChanged 方法来通知绑定的UI元素属性值的改变。这样,当 Name 属性的值改变时,所有绑定到 Name 属性的UI元素都会自动更新。

private int _name;

        public int Name
        {
            get { return _name; }
            set { _name = value; this.NotifyChanged(); }
        }

这一部分可以根据自己的需要来增加属性。

public ObservableCollection<DataModel> DataList { get; set; } = new ObservableCollection<DataModel>();

public DataViewModel()
{
    DataList.Add(new DataModel { Name = 1, Clothcolor = "红色", ClothSize = 2 });
}

我们在控制器的文件中,通过定义的ObservableCollection 是.NET Framework中提供的一个泛型集合类,它继承自 Collection 并实现了 INotifyCollectionChanged 接口。
这里的DataList与前端的数据绑定要一致!
我们在构造函数内增加对象,从而显示对应的数值。

3 问题

在这里插入图片描述
无故的空行以及数据列的增加!

3.2 解决

问题主要出现在前端,主要是设置方面的问题。

AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserResizeColumns="False"

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了列表数据的绑定。

标签:DataContext,Name,绑定,列表,2.2,WPF,属性
From: https://blog.csdn.net/arriettyandray/article/details/140821346

相关文章

  • WPF 自定义路由事件的实现
    路由事件通过EventManager,RegisterRoutedEvent方法注册,通过AddHandler和RemoveHandler来关联和解除关联的事件处理函数;通过RaiseEvent方法来触发事件;通过传统的CLR事件来封装后供用户使用。如何实现自定义路由事件,可以参考MSDN官网上的文档:如何:创建自定义路由事件下面的这个......
  • WPF 数据校验
    一、新建NameValidationRule类publicclassNameValidationRule:ValidationRule{publicoverrideValidationResultValidate(objectvalue,CultureInfocultureInfo){varlength=value.ToString().Length;if(length......
  • WPF C# split picture into small pieces and show in grid cells
    usingSystem;usingSystem.Collections.Generic;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents;using......
  • WPF 模板
    一、数据模板继承了ItemConrol的控件对象(如ListView、ListBox、DataGrid、TabControl等等),都可以使用数据模板DataTemplate。数据模板的作用在于决定每个Item中的数据的展示形式。普通控件通过Template属性来定义模板,而子项容器控件则通过ItemTemplate属性来定义子项模板。先创......
  • Python数据结构实战:列表、字典与集合的高效使用
    在日常的编程工作中,选择合适的数据结构对于提高程序效率至关重要。Python提供了丰富的内置数据结构,其中最常用的就是列表(List)、字典(Dictionary)和集合(Set)。本文将深入探讨这些数据结构,并介绍它们的内部实现以及如何高效地使用它们。1.列表(List)1.1定义与创建列表是......
  • WPF中如何根据数据类型使用不同的数据模板
    我们在将一个数据集合绑定到列表控件时,有时候想根据不同的数据类型,显示为不同的效果。例如将一个文件夹集合绑定到ListBox时,系统文件夹显示为不同的效果,就可以使用模板选择器功能。WPF提供了一个模板选择器类型DataTemplateSelector,它可以根据数据对象和数据绑定元素来选择 Dat......
  • v-bind指令与class类和style的内联样式的绑定
    1.v-bind指令1.v-bind的认知与用法我们先创建一个新的页面去除掉一些元素保留剩下的元素然后对其添加一些属性和值创建好了之后我们可以来在页面上显示一个图片用我们的image组件找到我们的本地图片的位置或者网络图片的url放入我们的src里面。在src里面用到了我们的图片......
  • WPF 路由事件
    一、什么是路由事件?根据MSDN定义:功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件。实现定义:路由事件是由类的实例支持的CLR事件,RoutedEvent由事件WindowsPresentationFoundation(WPF)系统处理。典型的WPF应......
  • C++类和对象(下):初始化列表、explicit关键字、友元函数、友元类
    文章目录C++类和对象9、初始化列表9.1构造函数体赋值9.2初始化列表9.3explicit(显示)关键字10、友元10.1友元函数10.2友元类C++类和对象9、初始化列表一个类的构造函数要初始化成员变量有两种方式,一种是构造函数体赋值,另一种是初始化列表。9.1构造函数体赋值......
  • 重塑列表美学:CSS `list-style` 属性的魔法
    重塑列表美学:CSSlist-style属性的魔法摘要CSS的list-style属性是控制列表项标记样式的强大工具。通过这个属性,开发者可以轻松改变无序列表和有序列表的外观,包括标记的类型、位置以及图像。本文将深入探讨list-style属性的各个方面,并提供丰富的代码示例,展示如何使用......