用代码实现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;
            }
        }

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值