找回密码
 立即注册

QQ登录

只需一步,快速开始

781504429

注册会员

10

主题

36

帖子

102

积分

注册会员

积分
102

活字格认证

781504429
注册会员   /  发表于:2014-7-18 21:15  /   查看:9880  /  回复:9
WPF里面 表格用的是C1FlexGrid,列模板为C1DatePicker ,请问如何将文本框设为只读,只能从日期选择里面初始化

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

9 个回复

倒序浏览
781504429
注册会员   /  发表于:2014-7-21 19:00:00
沙发
没人解答么
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-22 16:24:00
板凳
回复 1楼781504429的帖子

大面积停电,很抱歉给你带来不便。

可以重写C1DatePicker的CotrolTemplate。将c1:C1MaskedTextBox 这部分输入框ReadOnly设置为True.
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
781504429
注册会员   /  发表于:2014-7-23 09:06:00
地板
回复 3楼Alice的帖子

能给出具体重写部分的代码吗
回复 使用道具 举报
781504429
注册会员   /  发表于:2014-7-23 09:19:00
5#
回复 3楼Alice的帖子

还有具体部分是如何绑定的
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-23 15:56:00
6#
回复 5楼781504429的帖子

你问的是c1FlexGrid的数据绑定么?
这个可以参考我们的文档:
http://helpcentral.componentone. ... neratingthedata.htm
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
781504429
注册会员   /  发表于:2014-7-23 17:32:00
7#
回复 6楼Alice的帖子

我是说能给出在xaml中重写C1DatePicker 、还有重写模板各个部分里面的数据绑定的代码吗
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-23 17:43:00
8#
回复 7楼781504429的帖子


重写ControlTemplate太费时间,所以我继承C1DatePicker并且从VisualTree上直接获取输入框,将它的IsReadOnly设为True。
  1.     public class myDatePicker : C1DatePicker
  2.     {   
  3.         public override void OnApplyTemplate()
  4.         {
  5.             base.OnApplyTemplate();
  6.             C1MaskedTextBox maskedTexBox= FindFromVisualTree<C1MaskedTextBox>(this);
  7.             maskedTexBox.IsReadOnly = true;            
  8.         }

  9.         //override
  10.         private T FindFromVisualTree<T>(Visual root)

  11.          where T : Visual
  12.         {
  13.             if (root == null)
  14.             {
  15.                 return default(T);
  16.             }
  17.             T type = root as T;
  18.             if (type != null)
  19.             {
  20.                 return type;
  21.             }
  22.             int count = VisualTreeHelper.GetChildrenCount(root);
  23.             for (int i = 0; i < count; i++)
  24.             {
  25.                 var child = FindFromVisualTree<T>(VisualTreeHelper.GetChild(root, i) as Visual);

  26.                 if (child != null)
  27.                 {
  28.                     return child;
  29.                 }
  30.             }
  31.             return default(T);
  32.         }
  33.     }
复制代码


然后把你C1FlexGrid列里的C1DatePicker换成我重写的这个。
Sample我发上来,我测试过可以使用,你根据自己需求再修改修改。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
781504429
注册会员   /  发表于:2014-7-23 20:29:00
9#
回复 8楼Alice的帖子

谢谢,这个方法正适合
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-24 09:21:00
10#
回复 9楼781504429的帖子

不客气。欢迎就本次回答评分。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部