文章目录

  • 前言
  • 一、新建数据模型
  • 二、界面设计
  • 三、数据初始化
  • 四、WPF DataGrid.DataGridComboBoxColumn 数据绑定

前言


一、新建数据模型

public class NotifyPropertyObject : INotifyPropertyChanged
{public event PropertyChangedEventHandler PropertyChanged;public void OnPropertyChanged(string propertyName){if(PropertyChanged != null){PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));}}}
public class MyStudent: NotifyPropertyObject
{private int _Num;public int Num{get { return _Num; }set { _Num = value;OnPropertyChanged("Num");}}private bool _IsTest;public bool IsTest{get { return _IsTest; }set { _IsTest = value;OnPropertyChanged("IsTest");}}private string _Name;public string Name{get { return _Name; }set { _Name = value;OnPropertyChanged("Name");}}private int _Age;public int Age{get { return _Age; }set { _Age = value;OnPropertyChanged("Age");}}private double _Score;public double Score{get { return _Score; }set { _Score = value;OnPropertyChanged("Score");}}private string _State; public string State{get { return _State; }set { _State = value;OnPropertyChanged("State");}}}

二、界面设计

<Window x:Class="WPFBindingDemo.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:WPFBindingDemo"mc:Ignorable="d"Title="MainWindow" Height="650" Width="800"><Grid><Grid.Resources><!--Create list of enumeration values--><ObjectDataProvider x:Key="strList" ObjectType="{x:Type local:OSList}" MethodName="GetList"/></Grid.Resources><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="auto"/><RowDefinition /></Grid.RowDefinitions><Grid Grid.Column="1" Name="GridTable" Height="360" Background="Silver" Margin="2"><Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition><RowDefinition></RowDefinition></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="130"></ColumnDefinition><ColumnDefinition Width="150"></ColumnDefinition><ColumnDefinition Width="20"></ColumnDefinition></Grid.ColumnDefinitions><Label Width="130" Height="25"  Grid.Row="0" Grid.Column="0"  Name="label1">TwoWay</Label><TextBox Width="150" Height="25"  Grid.Row="0" Grid.Column="1"  Name="textBox4" Text="{Binding ElementName=scrollBar1,Path=Value,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" /><Label Width="130" Height="25"  Grid.Row="1" Grid.Column="0"  Name="label2">OneWay</Label>   <TextBox Width="150" Height="25"  Grid.Row="1" Grid.Column="1"   Name="textBox1" Text="{Binding ElementName=scrollBar1, Path=Value,Mode=OneWay}"/>   <Label Width="130" Height="25"  Grid.Row="2" Grid.Column="0"  Name="label3">OneWayToSource</Label>   <TextBox Width="150" Height="25"  Grid.Row="2" Grid.Column="1"   Name="textBox2" Text="{Binding ElementName=scrollBar1, Path=Value,Mode=OneWayToSource}" />  <Label Width="130" Height="25"  Grid.Row="3" Grid.Column="0"  Name="label4">OneTime</Label>  <TextBox Width="150" Height="25"  Grid.Row="3" Grid.Column="1"   Name="textBox3" Text="{Binding ElementName=scrollBar1, Path=Value,Mode=OneTime}"/><ScrollBar Value="30" Minimum="0" Grid.RowSpan="4" Grid.Row="0" Grid.Column="3" Maximum="100" Name="scrollBar1" Width="18" Height="{Binding ElementName=GridTable,Path=Height}" /></Grid><Grid Margin="2" Background="GreenYellow" Grid.Row="1" Grid.Column="1"><DataGrid x:Name="dataGridName" CanUserAddRows="False" AutoGenerateColumns="False" ItemsSource="{Binding MyStudentList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" CanUserSortColumns="False"><DataGrid.Columns><DataGridCheckBoxColumn Header="选择" Width="*" Binding="{Binding IsTest}"></DataGridCheckBoxColumn><DataGridTextColumn Header="Num" Width="*" Binding="{Binding Num}"></DataGridTextColumn><DataGridTextColumn Header="Name" Width="*" Binding="{Binding Name}"></DataGridTextColumn><DataGridTextColumn Header="Age" Width="*" Binding="{Binding Age}"></DataGridTextColumn><DataGridTextColumn Header="Score" Width="*" Binding="{Binding Score}"></DataGridTextColumn><DataGridComboBoxColumn Header="State" Width="*" ItemsSource="{Binding Source={StaticResource strList}}" SelectedItemBinding="{Binding State}" TextBinding="{Binding State,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></DataGridComboBoxColumn><DataGridComboBoxColumn Header="State" Width="*" ItemsSource="{x:Static local:StrList.StateList}" SelectedItemBinding="{Binding State}" TextBinding="{Binding State,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></DataGridComboBoxColumn><!--<DataGridTemplateColumn Header="Image" Width="SizeToCells" IsReadOnly="True"><DataGridTemplateColumn.CellTemplate><DataTemplate><Image Source="{Binding Image}" /></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn>--></DataGrid.Columns></DataGrid></Grid></Grid>
</Window>

三、数据初始化

public class OSList
{string[] txList = new string[] { "1", "2", "3" };public string[] GetList(){return this.txList;}
}public class StrList
{public static List<string> StateList { get; set; }static StrList(){StateList = new List<string>() { "1", "2", "3","4" };}
}/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{public ViewModels.MainViewModel ViewModel { get { return App.MainViewModel; } }public List<MyStudent> MyStudentList = new List<MyStudent>();public MainWindow(){InitializeComponent();this.DataContext = ViewModel;this.Loaded += MainWindow_Loaded;}private void MainWindow_Loaded(object sender, RoutedEventArgs e){MyStudentList = new List<MyStudent>();for (int i = 0; i < 5; i++){MyStudent myStudent = new MyStudent();myStudent.Num = i+1;myStudent.IsTest = true;myStudent.Name = "d" + i.ToString();myStudent.Age = i + 12;myStudent.Score = i + 78;myStudent.State = "1";MyStudentList.Add(myStudent);}dataGridName.ItemsSource = null;dataGridName.ItemsSource = MyStudentList;}}

四、WPF DataGrid.DataGridComboBoxColumn 数据绑定

xaml代码:

<Grid><Grid.Resources><!--Create list of enumeration values--><ObjectDataProvider x:Key="strList" ObjectType="{x:Type local:OSList}" MethodName="GetList"/></Grid.Resources><DataGrid Name="DG1" ItemsSource="{Binding}" AutoGenerateColumns="False"><DataGrid.Columns><DataGridComboBoxColumn Header="下拉框测试"SelectedItemBinding="{Binding sIdx}" ItemsSource="{Binding Source={StaticResource strList}}"></DataGridComboBoxColumn></DataGrid.Columns></DataGrid>
</Grid>

逻辑代码:

namespace DataBingTest
{/// <summary>/// DB_DataGrid.xaml 的交互逻辑/// </summary>public partial class DB_DataGrid : Window{public DB_DataGrid(){InitializeComponent();List<Info> infoList = new List<Info>();Info info02 = new Info();info02.sIdx = "1";infoList.Add(info02);info02 = new Info();info02.sIdx = "2";infoList.Add(info02);info02 = new Info();info02.sIdx = "3";infoList.Add(info02);DG1.DataContext = infoList;}}public class Info{public string sIdx { get; set; }}public class OSList{string[] txList = new string[] {"1" ,"2","3"};public string[] GetList(){return this.txList;}        }
}

WPF使用DataGrid数据绑定相关推荐

  1. 详解WPF 4 DataGrid控件的基本功能

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 详解WPF 4 D ...

  2. WPF之DataGrid控件使用

    WPF之DataGrid控件使用 一.DataGrid简介 二.DataGrid数据源绑定 三.DataGrid单元格编辑触发事件 四.DataGrid增加删除行 五.DataGrid数据触发器 参考 ...

  3. 有关WPF中DataGrid控件的基础应用总结

    基础说明 DataGrid是WPF提供的基础控件,它可以非常轻松的呈现出一张表格,本文章会按照从易到难的顺序依次将DataGrid的使用方法进行解说,除了MSDN上给出的最基本的例子之外,给出了三个比 ...

  4. WPF基础-DataGrid

    WPF基础DataGrid(VS2015+Win10) 在WPF中,主要使用DataGrid控件进行表格化数据的展示,控件提供一个用户界面,用于 ADO.NET 数据集(ADO.NET是微软的一个组件 ...

  5. WPF入门:数据绑定

    原文:WPF入门:数据绑定 上一篇我们将XAML大概做了个了解 ,这篇将继续学习WPF数据绑定的相关内容 数据源与控件的Binding Binding作为数据传送UI的通道,通过INotityProp ...

  6. Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)

    原文:Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定) ------------------------------ ...

  7. C# wpf中DataGrid 支持汇总行

    最近有一个需求,需要汇总金额,份额等字段.我们使用的是原生的WPF控件,自己开发了一套Template.而没有使用比较成熟的第三方控件.所以这个功能得自己开发.并且要做成控件层次的功能. 当然也可以这 ...

  8. 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH

    在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH 原文 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不 ...

  9. WPF 实现 DataGrid/ListView 分页控件

    原文:WPF 实现 DataGrid/ListView 分页控件 在WPF中,通常会选用DataGrid/ListView进行数据展示,如果数据量不多,可以直接一个页面显示出来.如果数据量很大,200 ...

最新文章

  1. nginx配置image_filter生成缩略图
  2. linux内核网络协议栈--架构分析(十八)
  3. Linux 技术篇-文件大小查看方法实例演示,查看指定文件大小,查看列表下所有文件夹和文件的大小
  4. javascript之DOM总结
  5. unity创建一个简单对象的开销_Unity下简单对象池的创建与使用
  6. 为什么企业需要IT资产管理
  7. java中如何声明外键约束,外键约束不正确 - java-mysql
  8. LeetCode-94. 二叉树的中序遍历
  9. 苹果这个酷炫的项目要流产了?市场未爆发或成主因
  10. Linux实时/高性能任务独占CPU的操作
  11. 我为什么要用 Javascript 编写 CSS?
  12. 博客文件第二部分 Linux Shell高级编程技巧——第一章 深入讨论
  13. 终于 知道为什么datagrid有时候翻页要双击了...
  14. 1104报表背景知识
  15. 如何判断工作簿中是否存在某个工作表
  16. react 录制音频_如何在React Native中录制音频
  17. 腾讯云十亿级 Node.js 网关的架构设计与工程实践
  18. Java中的gvm_深入浅出GVM之GC
  19. mac上metersphere本地开发环境搭建
  20. 倍福触摸屏维修倍福工控机维修CP3916-0010详解

热门文章

  1. java ascii 的转换
  2. windows 2003下杀dllhost.exe进程
  3. 请停停你在远方的脚步,听听兰州
  4. 二元函数对xy同时求导_陕西省特级教师魏玉英:让“数形结合思想”浸润在教学中——《二元一次方程与一次函数》同课异构课例分析...
  5. 【大数据分析必备】超全国内常用API接口汇总
  6. 如何退出linux命令find,find命令详解
  7. 国外军旅片佳作-分享给喜欢的朋友们
  8. python变量后加点和函数_在python中运行函数后,是否要更改变量?
  9. 游戏制作之路:游戏引擎选择、Mac下和Windows下UnrealEngine 4体验对比、文档及其他...
  10. 2017驾校 科三考试流程 富阳考场一号线