解决方案 »

  1.   

    使用DataGrid,修改列的HeaderTemplate模板,模板中使用textblock或者lable,使用binding机制。
    如果你不知道HeaderTemplate怎么用,先去MSDN上自己搜索。
      

  2.   


    先感谢回答。
    请教一下,C#这边用什么样的结构比较好。因为Header和Cell的ItemSource是一样的。
    我也不知道C#这边该用什么结构,怎么绑定好。
    还是说需要在C#这边动态创建绑定?
      

  3.   


    先感谢回答。
    请教一下,C#这边用什么样的结构比较好。因为Header和Cell的ItemSource是一样的。
    我也不知道C#这边该用什么结构,怎么绑定好。
    还是说需要在C#这边动态创建绑定?
    header  的话 你单独 绑定一个类的属性就ok了
      

  4.   


    补充一下就是
    Cell这边直接Binding属性名,就可以直接从List里面把相应的属性值显示出来。
    但是Header这边的绑定就很头疼了。从DataGrid继承来的ItemSource不知道怎么绑定才好。
    到现在我还没有成功地让Header显示出除了手动输入的和变量名以外的值。
    求绑定变量的例子。
      

  5.   

    为什么老纠结"绑定"
    做个循环,Header.Text替换成你要显示的文字,不就得了
    你要显示的文字,放哪,还不随便
    放数组也行,定义个类来存也行,总之能取出来不就得了
      

  6.   


    补充一下就是
    Cell这边直接Binding属性名,就可以直接从List里面把相应的属性值显示出来。
    但是Header这边的绑定就很头疼了。从DataGrid继承来的ItemSource不知道怎么绑定才好。
    到现在我还没有成功地让Header显示出除了手动输入的和变量名以外的值。
    求绑定变量的例子。
    嗯,你新建一个类,用于绑定header值。把window的DataContext设置成这个类。然后把属性绑定到对应的header就ok了。
      

  7.   


    我就是不知道用什么语法能得到 Header.Text。
    请您再指点一下,给个例程吧。比如我是:
    C#部分:namespace WpfApplication3 {
        public partial class MainWindow : Window {
            public MainWindow() {
                InitializeComponent();                    
                List<Pvalue> listforvalue = new List<Pvalue>();
                listforvalue.Add(new Pvalue {
                    value1 = "小张",
                    value2 = "20" });
                listforvalue.Add(new Pvalue {
                    value1 = "小王",
                    value2 = "30" });
                this.DataGridTest.ItemsSource = listforvalue; }        public class Pvalue {
                public string value1 {get; set;  }
                public string value2 { get;set;  } }        public class Pname {
                public string name1 { get { return "姓名";  }
                    set {  } }
                public string name2 { get { return "年龄";  }
                    set { }} }  }}
    XML部分:
      
    <DataGrid x:Name="DataGridTest" >
    </DataGrid>
      

  8.   


    结果出来这个:我就是想让value1和value2变成”姓名"和"年龄",
    但是不想用xmal里面header=""手敲进去
    也不想用中文变量名。
      

  9.   


    补充一下就是
    Cell这边直接Binding属性名,就可以直接从List里面把相应的属性值显示出来。
    但是Header这边的绑定就很头疼了。从DataGrid继承来的ItemSource不知道怎么绑定才好。
    到现在我还没有成功地让Header显示出除了手动输入的和变量名以外的值。
    求绑定变量的例子。
    嗯,你新建一个类,用于绑定header值。把window的DataContext设置成这个类。然后把属性绑定到对应的header就ok了。我试了这个:
    <DataGrid x:Name="DataGridTest" ColumnHeaderStyle="{DynamicResource sty_CHS}">
                 
                </DataGrid>
                <Border.Resources>
                    <Style x:Key="sty_CHS" TargetType="DataGridColumnHeader">
                        <Setter Property="Template" Value="{DynamicResource tp_CHS}"></Setter>
                    </Style>
                    <ControlTemplate x:Key="tp_CHS" TargetType="DataGridColumnHeader">
                        <StackPanel DataContext="pnametest">
                            <Label Content="{Binding name1}"></Label>
                        </StackPanel>
                    </ControlTemplate>            
                </Border.Resources>C#部分是:
    namespace WpfApplication3 {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window {
            public MainWindow() {
                InitializeComponent();            Pname pnametest = new Pname();
                List<Pvalue> listforvalue = new List<Pvalue>();
                listforvalue.Add(new Pvalue {
                    value1 = "小张",
                    value2 = "20"
                });
                listforvalue.Add(new Pvalue {
                    value1 = "小王",
                    value2 = "30"
                });
                this.DataGridTest.ItemsSource = listforvalue;
            }        public class Pvalue {
                public string value1 {
                    get;
                    set;
                }
                public string value2 {
                    get;
                    set;
                }
            }        public class Pname {
                public string name1 {
                    get {
                        return "姓名";
                    }
                    set {
                    }
                }
                public string name2 {
                    get {
                        return "年龄";
                    }
                    set {
                    }
                }
            }
        }
    }然后什么都没显示。
    我现在一头雾水,还恳请您给个例程。
      

  10.   

    构造函数里:DataGridTest.Columns[0].Header = Pname.name1;
     DataGridTest.Columns[1].Header = Pname.name2;静态类:public static class Pname
        {
            public static string name1 = "姓名";
            public static string name2 = "年龄";
        }这样最简单了。
      

  11.   

    我觉得您这个方法应该是对的..
    但是我遇到一个问题,
    就是执行DataGridTest.Columns[0].Header = Pname.name1;的时候会抛出异常。无论是在指定ItemSource之前还是之后,都会抛出异常。
    如果设断点,就会发现
    DataGridTest.Columns.Count是0。
    但是确实显示中这个DataGrid里面是有内容的。