找回密码
 立即注册

QQ登录

只需一步,快速开始

<c1ataGridTemplateColumn Name="col1" Header="col1" Width="75">
    <c1ataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox x:Name="chk1"></CheckBox>
        </DataTemplate>
    </c1ataGridTemplateColumn.CellTemplate>
</c1ataGridTemplateColumn>

如何在后台通过代码,直接取到chk1?


3 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-4-28 17:00:36
沙发
在WPF平台下从DataTemplate下获取控件,需要从逻辑树上获取。
可以使用WPF平台的VisualTreeHelper方法去获取逻辑树的元素(写代码通过控件的名称在逻辑树上查找),详细的使用方法可以参考微软的msdn。

如果是进入编辑状态,可以拿到EditElment,获取到这个控件。
  1.   void grid_BeganEdit(object sender, DataGridBeganEditEventArgs e)
  2.         {
  3.             var ch= e.EditingElement as CheckBox;
  4.             if (ch!= null)
  5.             {      }
  6.         }
复制代码

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

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
高级大宅男
初级会员   /  发表于:2016-4-28 18:06:42
板凳
Alice 发表于 2016-4-28 17:00
在WPF平台下从DataTemplate下获取控件,需要从逻辑树上获取。
可以使用WPF平台的VisualTreeHelper方法去获 ...

并不好取得 C1DataGrid的Column并没有GetCellContent方法,只有GetCellEditingContent方法,然而我并没有设置CellEditingTemplate(我想让他可以直接操作,而不用点一下进入编辑模式)
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-4-29 09:20:20
地板
高级大宅男 发表于 2016-4-28 18:06
并不好取得 C1DataGrid的Column并没有GetCellContent方法,只有GetCellEditingContent方法,然而我并没有 ...

在WPF下可以通过名字在VirtualTree上获取。
从VirtualTree上通过名字获取控件的方法参考:

  1. public static T FindVisualChildByName<T>(Visual parent, string name) where T : Visual
  2.          {
  3.              if (parent != null)
  4.              {
  5.                  for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
  6.                  {
  7.                      var child = VisualTreeHelper.GetChild(parent, i) as Visual;
  8.                      string controlName = child.GetValue(Control.NameProperty) as string;
  9.                      if (controlName == name)
  10.                      {
  11.                          return child as T;
  12.                      }
  13.                      else
  14.                      {
  15.                          T result = FindVisualChildByName<T>(child, name);
  16.                          if (result != null)
  17.                              return result;
  18.                      }
  19.                  }
  20.              }
  21.              return null;
  22.          }

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

葡萄城控件服务团队

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