• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 基于Silverlight DataGrid中无代码设置开始与结束日期DatePicker的实现方法

基于Silverlight DataGrid中无代码设置开始与结束日期DatePicker的实现方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了基于Silverlight DataGrid中无代码设置开始与结束日期DatePicker的实现方法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

有时候会碰到一些需要设置开始日期和结束日期的需求,比如有很多商品,每件商品都有开始出售日期和结束出售日期的字段。如何使用DatePicker控件来满足这些需求呢,下文将做解答:

1:新建SL4项目文件。新建Page页面DatePickerDemo.xaml;

2:新建实体类Product,包含SellBegin,SellEnd 字段。代码如下:

dataGrid1.ItemsSource=new List<Product>(){...};

运行实例:结果如下:

clip_image002

当然如果日期格式是这样的,那用户估计会找你麻烦了。默认的日期格式应该”2010/05/05”。

为什么前台xaml代码仅仅这样写,就可以成功的绑定数据呢?

<sdk:DataGrid Name="dataGrid1"> </sdk:DataGrid>

原因在于dataGrid1的AutoGenerateColumns 属性默认是true,为了实现自定义,在这里将它设置为false,并手动添加Column。代码如下:

运行,结果如下:

clip_image004

但是编辑界面是一个文本框,用户希望的是一个日期选择框,所以需要在单元格编辑的时候,使用DataPicker。

所以需要将<sdk:DataGridTextColumn Header="起始日期" Binding="{Binding SellBegin}" />

修改为使用DataGridTemplateColumn ,代码如下:

运行效果如下:

clip_image006

通过运行发现,虽然选择了日期,但是起始日期的值并没有变化。为什么?

.......

原来虽然设置了SelectedDate的Binding,但是没有设置Binding的模式(Mode).

于是将DataTemplete中的DatePicker修改为

<my:DatePicker SelectedDate="{Binding SellBegin,Mode=TwoWay}" />

Mode有三种:

OneWay:单向绑定,数据源更改会导致控件的值变化。

OneTime:只绑定一次。

TwoWay:双向绑定,你变我变。

运行后发现值变化了。

clip_image008

虽然值变化了,但是可以看到起始日期明显大于结束日期。

查看DatePicker的各个属性,看到有

DisplayDateStart 和 DisplayDateEnd 属性。

所以我们将起始日期的DisplayDateEnd属性绑定到SellEnd 字段上。结果如下:

<my:DatePicker SelectedDate="{Binding SellBegin,Mode=TwoWay}"

DisplayDateEnd="{Binding SellEnd}"/>

运行结果如下:

image

好了,剩下最后一步了,就是设置显示的格式了。

第一个要明确的是,我们设置格式的对象是CellTemplete中的TextBlock对象,而不是CellEditingTemplete对象中的DatePicker对象,因为用来显示的是TextBlock对象,而编辑的是DatePicker对象。

查看Binding 的属性,发现有StringFormat属性,代表了格式化字符串。于是修改代码为:

<TextBlock Text="{Binding SellBegi

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-28C#运用FileInfo类实现拷贝文件的方法
  • 2017-05-28C#获得文件属性信息的实现方法
  • 2017-05-28C#中设计、使用Fluent API
  • 2017-05-28学会使用C#异常
  • 2017-05-28C# RSA分段加解密实现方法详解
  • 2017-05-28C#对XML文件的各种操作实现方法
  • 2017-05-28c# 类型转换
  • 2017-05-28通过特性(attribute)为枚举添加更多信息示例
  • 2017-05-28利用C#操作WMI指南
  • 2017-05-28详解C#正则表达式Regex常用匹配

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#索引器简单实例代码
    • C#实现打印与打印预览功能的思路及代码
    • C#的path.GetFullPath 获取上级目录实现方法
    • ASP.NET C#中Application的用法教程
    • C#中的静态成员、静态方法、静态类介绍
    • 在WinForm中发送HTTP请求的实现方法
    • C#自动创建数据库实现代码
    • C#实现复杂XML的序列化与反序列化
    • asp.net页面中如何获取Excel表的内容
    • WinForm实现按名称递归查找控件的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有