今天我们来一起学习怎样自定义DataGrid的单元格呈现形式的基本操作方法。

基本知识讲解

 

1)两种状态

DataGrid的单元格的状态有两类,即编辑状态和非编辑状态。

在实际开发中,如果一个单元格所在的列不设为只读的话(即要求可读写),那么这个单元格就存在这两种状态。按需要,这时就应当对这两种状态对单元格分别设定不同的编辑模板。如果该单元格仅用于进行简易的文本编辑,则可保留原有状态,无需重新设定。

这两种编辑模板的标签如下所示:

①非编辑状态模板:<data:DataGridTemplateColumn.CellTemplate>

②编辑状态模板:<data:DataGridTemplateColumn.CellEditingTemplate>

 

2)三种模板

<data:DataGridTextColumn>

普通文本列,即基本默认设置

<data:DataGridCheckBoxColumn>

带有复选框的列,当该列单元格数据的值为true或false、1或0时,将该列的模板设定。

<data:DataGridTemplateColumn>

自定义模板列,这个是功能最强的可以放入任何自定义控件。

关于绑定

如果单元格所在列无需编辑或只读的话,绑定模式设定为默认的OneWay即可。如果该列需要进行编辑,就请将绑定模式设为TwoWay。

更为详细的说明请参见MSDN的文章。(点这里)

实例

说明:为了能自定义列,我们需要先将DataGrid的AutoGenerateColumns属性设为false。

MainPage.xaml文件代码

<UserControl

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:src="clr-namespace:SilverlightClient"

mc:Ignorable="d" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="SilverlightClient.MainPage"

d:DesignWidth="320" d:DesignHeight="240">

<UserControl.Resources>

<!--静态资源绑定-->

<src:cbSexListProvider x:Key="cbSexListProvider"></src:cbSexListProvider>

</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="White" Width="320" Height="240">

<data:DataGrid x:Name="dgCustom" Margin="8,8,8,42" AutoGenerateColumns="False" FontSize="14">

<data:DataGrid.Columns>

<data:DataGridTextColumn Header="编号" IsReadOnly="True" Binding="{Binding EmployeeID,Mode=OneWay}" /><!--该列只读-->

<data:DataGridTextColumn Header="名称" Binding="{Binding EmployeeName,Mode=TwoWay}" />

<data:DataGridTextColumn Header="年龄" Binding="{Binding EmployeeAge,Mode=TwoWay}" />

<data:DataGridTemplateColumn Header="性别" Width="80">

<data:DataGridTemplateColumn.CellTemplate><!--普通显示模式-->

<DataTemplate>

<TextBlock Text="{Binding EmployeeSex}"></TextBlock>

</DataTemplate>

</data:DataGridTemplateColumn.CellTemplate>

<data:DataGridTemplateColumn.CellEditingTemplate><!--编辑模式-->

<DataTemplate>

<ComboBox Width="80" ItemsSource="{Binding cbSexList,Source={StaticResource cbSexListProvider}}" SelectedItem="{Binding EmployeeSex,Mode=TwoWay}" />

</DataTemplate>

</data:DataGridTemplateColumn.CellEditingTemplate>

</data:DataGridTemplateColumn>

<data:DataGridCheckBoxColumn Header="婚否" Binding="{Binding EmployeeMarried,Mode=TwoWay}" />

</data:DataGrid.Columns>

</data:DataGrid>

</Grid>

</UserControl>

MainPage.xaml.cs文件代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

namespace SilverlightClient

{

//静态资源绑定源

public class cbSexListProvider

{

public List<string> cbSexList

{

get

{

return new List<string> { "男", "女" };

}

}

}

//定义数据类

public class Employees

{

public int EmployeeID { get; set; }

public string EmployeeName { get; set; }

public int EmployeeAge { get; set; }

public string EmployeeSex { get; set; }

public int EmployeeMarried { get; set; }

}

public partial class MainPage : UserControl

{

List<Employees> em = new List<Employees>();

public MainPage()

{

InitializeComponent();

this.Loaded += new RoutedEventHandler(MainPage_Loaded);

}

void MainPage_Loaded(object sender, RoutedEventArgs e)

{

em.Add(new Employees() { EmployeeID = 1, EmployeeName = "张三", EmployeeAge = 23, EmployeeSex = "男", EmployeeMarried = 0 });

em.Add(new Employees() { EmployeeID = 2, EmployeeName = "李四", EmployeeAge = 24, EmployeeSex = "女", EmployeeMarried = 1 });

em.Add(new Employees() { EmployeeID = 3, EmployeeName = "王五", EmployeeAge = 25, EmployeeSex = "男", EmployeeMarried = 1 });

dgCustom.ItemsSource = em;

}

}

}

转载于:https://www.cnblogs.com/hl3292/archive/2010/11/12/1875424.html

silverlight带有复选框的列相关推荐

  1. html中的数字选框,带有复选框和数字类型的HTML表单提交与PHP?

    为了学习的目的,我在做这个网站,用户可以选择一些项目和他想要的单位数量,假设这是最简单的购物应用程序.带有复选框和数字类型的HTML表单提交与PHP? 于是,我从数据库中读取在目录中的现有项目: $q ...

  2. 03-menuStrip设置带有复选框的按钮

    自己写了一个小例子,在menuStrip菜单栏中设置带有复选框的按钮,实现工具栏和状态栏的显示和隐藏.[工具栏和状态栏按钮默认是被选中的,即显示] 1.设置界面 2.属性设置 将[工具栏]和[状态栏] ...

  3. 一个带有复选框的ListView

    效果图:           第一步: 新建一个布局文件: activity_checkboxdisplay.xml 用于存放ListView和那个全选的CheckBox <?xml versi ...

  4. GridControl 选择列、复选框全选(上)

    说明: GirdControl 中加入一列,这一列不是写在数据库中的,而是代码中加入的. 图示: 底层类代码: #region GridControl 全选/// <summary>/// ...

  5. checked jq 添加_jquery动态添加复选框.attr(“checked”,true)不起作用

    根据一些数据我正在克隆带有复选框的div并检查数据值是否为"True"然后追加到目标div. 使用jquery 1.5.2 IE8在兼容模式下工作,否则不起作用. FF不起作用. ...

  6. 网页复选框设置只能选一个_网页自动填表基础教程从简单开始

    通常来说,网页自动填表包含单选框.复选框.文本框.多行文本框.下拉列表框的自动填写.本文讲讲这些项目的自动填写方法.所用到的工具是网页自动操作通用工具. 一.文本输入框及多行文本输入框的自动填写 下面 ...

  7. Python界面编程第十五课:Pyside2 (Qt For Python)使用CheckBox复选框

    QCheckBox 是什么? QCheckBox 是一个开关选择按钮,有checked和unchecked两个状态. 复选框通常用于表示应用程序中可以启用或禁用而不影响其他功能的功能.可以实现不同类型 ...

  8. layui添加复选框_layui表格数据复选框回显设置方法

    layui2.3版本,本身并不带有复选框回显功能,那么需要从源头解决此事,F12代码调试,找到与复选框关联的地方发现: 我们只需要在渲染数据回调时找到每个复选框根据数据的不同来设置回显. layui这 ...

  9. 在 GridView 控件中添加一列复选框51

    简介 在前面的教程中 , 我们学习了如何为 GridView 控件添加一列 单选 按钮来选择一个特定的记录.当用户被限制最多只能从网格中选中一项时,一列单选按钮是一个非常恰当的用户界面.然而,有时我们 ...

最新文章

  1. c语言if判断正确却不进函数,C语言初学者,为什么满足if条件却不进入,求大老解惑...
  2. RAC起单实例make
  3. 综合布线的12大热点技术
  4. zip、gz压缩文件查看命令zless、less
  5. 解决方案:数据同步Canal
  6. 自然语言3——官网介绍
  7. java远程调试服务器的工程配置
  8. 光流在视频检测和分割的再应用
  9. 读书 -- 偷偷暗时间之《暗时间》总结
  10. Esp8266对接阿里云物联网远程实时温度监控{探讨帖}
  11. 笔记模板(背):树状数组
  12. 王亮:游戏AI探索之旅——从alphago到moba游戏
  13. Catboost参数全集
  14. SpringSecurity自定义多Provider时提示No AuthenticationProvider found for问题的解决方案与原理(一)
  15. 用Android做的一个简单的视频播放器
  16. 【Powerdesigner】DFD分层数据流图的画法
  17. 衡水学院计算机实习,衡水学院教育实习系列报道之三
  18. CNKI e study 去除word插件
  19. uView2.0 u-index-list 添加#点击不生效
  20. 【SVN】win10下SVN图标不显示

热门文章

  1. asp网上书店系统_Asp.net Core启动流程讲解(一)
  2. Python系列教程之学生信息管理系统
  3. python入门:正则表达式,面向对象编程,零基础视频教程分享
  4. android 帖子功能,anroid 各个功能的帖子 和代码片段
  5. vb error bc30469: 对非共享成员的引用要求对象引用_提问||准备好面向你的对象了吗?...
  6. linux zynq ps dma,Zynq PS侧DMA驱动
  7. 教你两种python selenium保存图片的方法
  8. 51单片机可以做什么实用的产品?
  9. eclipse+adt+android sdk,64位Ubuntu 11.10下Android开发环境的搭建(JDK+Eclipse+ADT+Android SDK详细)...
  10. eclipse提示jre_给新手 Java 开发者的 7 点提示 | Linux 中国