none
求后台生成DataGrid模板列的示例 RRS feed

  • 问题

  • XAML里有个DataGrid,暂无数据绑定,现想在CS里给这个DataGrid添加一个RadioButton或者CheckBox控件的模板列,求类似示例
    2010年1月11日 7:36

答案

  • 你好,
     
          目前对于用后台生成DataGridColumn的方法并不多. 据我所知有2种,第一种是将datatemplate写在style中在后台载入,第2种是将datatemplte写成string然后Load成datatemplate.
     
         你可以看一下这个文章  blogs.msdn.com/scmorris/archive/2008/04/14/defining-silverlight-datagrid-columns-at-runtime.aspx
       
         如果你在创建的时候有问题的话,欢迎继续提问.

    2010年1月12日 7:05

全部回复

  • 你给我的这个toolkit事实上我电脑里就有,不过没找到什么DataGrid后台生成模板列的类似例子,再说了这个tookit帮助主要是以Xaml表达的吧..?
    2010年1月11日 8:10
  • 你好,
     
          目前对于用后台生成DataGridColumn的方法并不多. 据我所知有2种,第一种是将datatemplate写在style中在后台载入,第2种是将datatemplte写成string然后Load成datatemplate.
     
         你可以看一下这个文章  blogs.msdn.com/scmorris/archive/2008/04/14/defining-silverlight-datagrid-columns-at-runtime.aspx
       
         如果你在创建的时候有问题的话,欢迎继续提问.

    2010年1月12日 7:05
  • 将datatemplate写在style中在后台载入这种要好一些
    2010年1月13日 8:38
  • 谢谢版主,这答案正是我想要的,要是能像asp的gridview那样方便就好了,不知道是不是一种奢望

    2010年1月14日 9:11
  • 写一个ResourceDictionary的文件,里面有 <DataTemplate x:Name="template"> <Grid> </Grid> </DataTemplate> 然后这样就可以得到dataTemplate了: string resourceFile = "AttendanceDictionary"; string[] names = this.GetType().Assembly.GetManifestResourceNames(); foreach (string resource in names) { if (resource.Contains(resourceFile)) { resourceName = resource; } } if (styleXaml == null) { Stream stream = this.GetType().Assembly.GetManifestResourceStream(resourceName); using (StreamReader reader = new StreamReader(stream)) { styleXaml = reader.ReadToEnd(); } } ResourceDictionary rd = XamlReader.Load(styleXaml) as ResourceDictionary; return rd["template"] as DataTemplate; 不过我有个问题,这样做不可以用自定义的控件,求高手解答。
    2010年1月15日 2:47