用代码实现WPF ListView 自定义模版

WPF 的模版设计极为强大,通过模版自定义ListView 的显示样式是一种最常用的显示列表的数据的方式,本文完全通过代码实现一个ListView,

ListView绑定的数据为RecordData,且每个格子之前都会有一个圆点。

创建ListView 显示列:

 public void InitRecordColumns()                     //初始化录音记录列信息
        {
            XmlDocument xml_doc = new XmlDocument();
            try
            {
                xml_doc.Load("SystemConfig.xml");
                XmlNode node = xml_doc.SelectSingleNode("Configs/RecordConfig");
                XmlNodeList members = node.ChildNodes;
                GridView gv_recordlist = new GridView();
                gv_recordlist.Columns.Clear();
                foreach (XmlNode member in members)
                {
                    string name = member.ChildNodes[0].InnerText;
                    string column_name = member.ChildNodes[1].InnerText;
                    int hidden = Convert.ToInt32(member.ChildNodes[2].InnerText);
                    string width = member.ChildNodes[3].InnerText;
                    if (hidden == 0)
                    {
                        GridViewColumn gvc_column = new GridViewColumn();
                        GridViewColumnHeader gvch_column = new GridViewColumnHeader();
                        gvch_column.Height = 25;
                        gvch_column.Background = Brushes.LightBlue;
                        gvch_column.Width = Convert.ToInt32(width);
                        gvch_column.Content = column_name;
                        gvch_column.ToolTip = name;
                        gvch_column.Click += new RoutedEventHandler(gvch_column_Click);
                        gvc_column.Header = gvch_column;
                        //gvc_column.DisplayMemberBinding = new Binding(name);
                        DataTemplate cdt = new DataTemplate();

                        FrameworkElementFactory cfef = new FrameworkElementFactory(typeof(StackPanel));
                        Binding binding = new Binding();
                        binding.Path = new PropertyPath(name);
                        cfef.SetValue(StackPanel.OrientationProperty, Orientation.Horizatal);

                        FrameworkElementFactory subfef1 = new FrameworkElementFactory(typeof(Label));
                        subfef1.SetValue(Label.ContentProperty, "●");
                        cfef.AppendChild(subfef1);

                        FrameworkElementFactory subfef2 = new FrameworkElementFactory(typeof(TextBox));
                        subfef2.SetBinding(TextBox.TextProperty, binding);
                        cfef.AppendChild(subfef2);

                        cdt.VisualTree = cfef;

                                              gvc_column.CellTemplate = cdt;

                        gv_recordlist.Columns.Add(gvc_column);
                    }
                }
                lv_record.View = gv_recordlist;

                lv_record.SelectionMode = SelectionMode.Single;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Create record view fail." + ex.ToString());
                return;
            }
        }


 

发布了41 篇原创文章 · 获赞 9 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/jian200801/article/details/7663818