天天看點

Silverlight的DataGrid合并單元格

     現在也不知道還有沒有同學做Silverlight開發了,我是一個Silverlight菜鳥,遇到問題也很難百度查到。就簡單的記錄一下這兩天遇到的問題,并做了一個簡單的小Demo,希望能夠幫助到其他同學,并為自己翻看。

      DataGrid合并單元格,實作結果如下:

Silverlight的DataGrid合并單元格

      Silverlight背景代碼如下:

/// <summary>
        /// 學生實體類
        /// </summary>
        public class Students
        {
            private string name;
            /// <summary>
            /// 學生姓名
            /// </summary>
            public string Name
            {
                get { return name; }
                set { name = value; }
            }

            private int age;
            /// <summary>
            /// 學生年齡
            /// </summary>
            public int Age
            {
                get { return age; }
                set { age = value; }
            }
            private string sex;
            /// <summary>
            /// 學生性别
            /// </summary>
            public string Sex
            {
                get { return sex; }
                set { sex = value; }
            }

            private List<Courses> coursesLists = new List<Courses>();
            /// <summary>
            /// 課程清單
            /// </summary>
            public List<Courses> CoursesLists
            {
                get { return coursesLists; }
                set { coursesLists = value; }
            }
        }      
/// <summary>
        /// 課程實體類
        /// </summary>
        public class Courses
        {
            private double score;
            /// <summary>
            /// 課程分數
            /// </summary>
            public double Score
            {
                get { return score; }
                set { score = value; }
            }

            private string course;
            /// <summary>
            /// 課程名稱
            /// </summary>
            public string Course
            {
                get { return course; }
                set { course = value; }
            }
        }      
/// <summary>
        /// 張山的課程清單
        /// </summary>
        /// <returns></returns>
        private static List<Courses> ZhangSan()
        {
            List<Courses> zhangsan = new List<Courses>();
            Courses shuxue = new Courses();
            shuxue.Course = "數學";
            shuxue.Score = 88;
            zhangsan.Add(shuxue);

            Courses yingyu = new Courses();
            yingyu.Course = "英語";
            yingyu.Score = 89;
            zhangsan.Add(yingyu);

            Courses yuwen = new Courses();
            yuwen.Course = "國文";
            yuwen.Score = 87;
            zhangsan.Add(yuwen);

            Courses dili = new Courses();
            dili.Course = "地理";
            dili.Score = 86;
            zhangsan.Add(dili);

            return zhangsan;
        }

        /// <summary>
        /// 李氏的課程清單
        /// </summary>
        /// <returns></returns>
        private static List<Courses> LiSi()
        {
            List<Courses> lisi = new List<Courses>();
            Courses shuxue = new Courses();
            shuxue.Course = "數學";
            shuxue.Score = 90;
            lisi.Add(shuxue);

            Courses yingyu = new Courses();
            yingyu.Course = "英語";
            yingyu.Score = 95;
            lisi.Add(yingyu);

            Courses yuwen = new Courses();
            yuwen.Course = "國文";
            yuwen.Score = 98;
            lisi.Add(yuwen);

            Courses dili = new Courses();
            dili.Course = "地理";
            dili.Score = 97;
            lisi.Add(dili);

            return lisi;
        }


        /// <summary>
        /// 王武的課程清單
        /// </summary>
        /// <returns></returns>
        private static List<Courses> WangWu()
        {
            List<Courses> wangwu = new List<Courses>();
            Courses shuxue = new Courses();
            shuxue.Course = "數學";
            shuxue.Score = 77;
            wangwu.Add(shuxue);

            Courses yingyu = new Courses();
            yingyu.Course = "英語";
            yingyu.Score = 78;
            wangwu.Add(yingyu);

            Courses yuwen = new Courses();
            yuwen.Course = "國文";
            yuwen.Score = 79;
            wangwu.Add(yuwen);

            return wangwu;
        }


        /// <summary>
        /// 趙劉的課程清單
        /// </summary>
        /// <returns></returns>
        private static List<Courses> ZhaoLiu()
        {
            List<Courses> zhaoliu = new List<Courses>();
            Courses shuxue = new Courses();
            shuxue.Course = "數學";
            shuxue.Score = 90;
            zhaoliu.Add(shuxue);

            Courses yingyu = new Courses();
            yingyu.Course = "英語";
            yingyu.Score = 95;
            zhaoliu.Add(yingyu);

            Courses yuwen = new Courses();
            yuwen.Course = "國文";
            yuwen.Score = 98;
            zhaoliu.Add(yuwen);

            return zhaoliu;
        }      
/// <summary>
        /// 得到學生清單資料
        /// </summary>
        /// <returns></returns>
        public static List<Students> GetStudentLists()
        {
            List<Students> studentLists = new List<Students>();
            studentLists.Add(new Students()
            {
                Name = "張山",
                Age = 20,
                Sex = "男",
                CoursesLists = ZhangSan()
            });
            studentLists.Add(new Students()
            {
                Name = "李氏",
                Age = 25,
                Sex = "女",
                CoursesLists = LiSi()
            });
            studentLists.Add(new Students()
            {
                Name = "王武",
                Age = 35,
                Sex = "男",
                CoursesLists = WangWu()
            });
            studentLists.Add(new Students()
            {
                Name = "趙劉",
                Age = 30,
                Sex = "女",
                CoursesLists = ZhaoLiu()
            });

            return studentLists;
        }

        /// <summary>
        /// Silverlight頁面初始化
        /// </summary>
        public DataGridMergeRows()
        {
            InitializeComponent();
            dataGrid.ItemsSource = GetStudentLists();
        }      

以下是Silverlight UI頁面代碼

<sdk:DataGrid x:Name="dataGrid" HorizontalAlignment="Center"  AutoGenerateColumns="False"  Height="470" Margin="10,0,0,0" VerticalAlignment="Top" Width="911">
            <sdk:DataGrid.Columns>
                <sdk:DataGridTextColumn Header="姓名" Binding="{Binding Name}" IsReadOnly="True" Width="108"/>
                <sdk:DataGridTextColumn Header="性别" Binding="{Binding Sex}" IsReadOnly="True" Width="108"/>
                <sdk:DataGridTextColumn Header="年齡" Binding="{Binding Age}" IsReadOnly="True" Width="108"/>

                <sdk:DataGridTemplateColumn Header="課程" IsReadOnly="True" Width="108" >
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ItemsControl ItemsSource="{Binding Path=CoursesLists}">
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <Border MinHeight="25" BorderThickness="0,0,0,1" Margin="0,0,0,-1" BorderBrush="#FFC9CACA">
                                            <TextBlock Text="{Binding Path=Course}" VerticalAlignment="Center" Margin="5" HorizontalAlignment="Left" TextWrapping="NoWrap"/>
                                        </Border>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>

                <sdk:DataGridTemplateColumn Header="成績" IsReadOnly="True" Width="108" >
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ItemsControl ItemsSource="{Binding Path=CoursesLists}">
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <Border MinHeight="25" BorderThickness="0,0,0,1" Margin="0,0,0,-1" BorderBrush="#FFC9CACA">
                                            <TextBlock Text="{Binding Path=Score}" VerticalAlignment="Center" Margin="5" HorizontalAlignment="Left" TextWrapping="NoWrap"/>
                                        </Border>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>

                
            </sdk:DataGrid.Columns>
        </sdk:DataGrid>      

轉載于:https://www.cnblogs.com/HanTB/p/6807668.html

ui