动态创建DataGrid模板列

working1997 2011-12-05 05:16:05
void CreateColumn()
{
StringBuilder tmp = new StringBuilder();
tmp.Append("<DataTemplate ");
tmp.Append("xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' ");
tmp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' >");
tmp.Append("<Button Content='test' x:Name='aaa' Click='MyClick' VerticalAlignment='Center' HorizontalAlignment='Center' />");
tmp.Append("</DataTemplate>");
DataTemplate contentTemplate = XamlReader.Load(tmp.ToString()) as DataTemplate;
DataGridTemplateColumn column = new DataGridTemplateColumn();
column.CellTemplate = contentTemplate;

this.DataGrid1.Columns.Insert(0, column);

}

private void MyClick(object sender, RoutedEventArgs e)
{
MessageBox.Show("OK");
}

怎么能把MyClick事件注册到模板列的按钮中???
...全文
159 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingdom_0 2011-12-15
  • 打赏
  • 举报
回复
你这种情况还算简单的……
我遇到的问题:
DataTemplate里面的东西也是动态生成的,生成的是StackPanel控件,用这种拼接的方式就不知道如何处理了.
kingdom_0 2011-12-15
  • 打赏
  • 举报
回复
hen_ai_hen_ai_ni 2011-12-14
  • 打赏
  • 举报
回复
那个模版列可以当作资源放到画面上,当需要权限的时候动态加载即可啊,没像你这样用,
dtp.CellTemplate = (DataTemplate)Resources["filterValueDatePikerTextBoxTemp"];
dtp.CellEditingTemplate = (DataTemplate)Resources["filterValueDatePikerTemp"];
这样不就行了,另外,既然你写了MyClick,那就在代码中定义这个事件,看看能不能触发他
joachern 2011-12-14
  • 打赏
  • 举报
回复
这样做好像不成吧!
working1997 2011-12-14
  • 打赏
  • 举报
回复
没人帮忙??
working1997 2011-12-06
  • 打赏
  • 举报
回复
能不能给个例子?
zxh198841 2011-12-06
  • 打赏
  • 举报
回复
在后台生成模板的时候生成不行吗?
working1997 2011-12-06
  • 打赏
  • 举报
回复
不行啊,我呈现的列是根据用户权限判断生成的,不在设计阶段生成
zxh198841 2011-12-06
  • 打赏
  • 举报
回复
直接写在模板列里面不行吗?

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧