MVVM使用xml作为treeview数据源

前言


使用xml来作为tree view数据源,实现treeview的加载。


主要步骤

1.ItemModel实体

代码如下(示例):

 public   class PropertyNodeItem: ViewModelBase
    {
        public string DisplayName { get; set; }
       
    }

    public class GroupModel : ViewModelBase
    {
        /// <summary>
        /// 组名
        /// </summary>
        public string GroupName { get; set; }

        private int groupCount;
        /// <summary>
        /// 组数量
        /// </summary>
        public int GroupCount
        {
            get { return groupCount; }
            set { groupCount = value; base.RaisePropertyChanged("GroupCount"); }
        }

        /// <summary>
        /// 子类集合
        /// </summary>
        public ObservableCollection<PropertyNodeItem> ItemModelList { get; set; }
    }

2.读取xml数据

代码如下(示例):

 GroupSourceList = new ObservableCollection<GroupModel>();// treeview 数据源
            //GroupModel gp = new GroupModel();
            
            XmlDocument docu = new XmlDocument();
            docu.Load("bb.xml");
            XmlNode FirstNode = docu.FirstChild;//element city  找到根节点

            //PropertyNodeItem CityNode = new PropertyNodeItem()//A1 确定跟节点的名称
            //{
            //    DisplayName = FirstNode.Attributes[0].Value,

            //};

           
            for (int i = 0; i < FirstNode.ChildNodes.Count; i++)//获取根节点下面的节点
            {
                GroupModel gp = new GroupModel();
                gp.GroupName = FirstNode.ChildNodes[i].Attributes[0].Value;
                gp.GroupCount = FirstNode.ChildNodes.Count;
                gp.ItemModelList = new ObservableCollection<PropertyNodeItem>();
                //GroupModel DistrictNode = new GroupModel() //二节点的名字
                //{
                //    GroupName = FirstNode.ChildNodes[i].Attributes[0].Value,

                //};


                for (int j = 0; j < FirstNode.ChildNodes[i].ChildNodes.Count; j++)//三节点里的内容
                {
                   
                    gp.ItemModelList.Add(new PropertyNodeItem() { DisplayName = FirstNode.ChildNodes[i].ChildNodes[j].Attributes[0].Value });
                    


                }
                GroupSourceList.Add(gp);
            }

该处使用的url网络请求的数据。


3.数据源binding xaml

 <Window.Resources>
        <HierarchicalDataTemplate x:Key="template_Item">
            <TextBlock Text="{Binding DisplayName}"/>
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate x:Key="template_Group" ItemsSource="{Binding ItemModelList}" ItemTemplate="{StaticResource template_Item}">
       <StackPanel Orientation="Horizontal">
              <TextBlock Text="{Binding GroupName}"/>
              <TextBlock Text="{Binding GroupCount}" Margin="5,0,0,0"/>
        </StackPanel>
</HierarchicalDataTemplate>

    </Window.Resources>
    <mc:MyTreeView Grid.Column="0"  x:Name="myTree" MouseMove="TreeView_MouseMove" TextBlock.FontSize="14" MySelectItem="{Binding SelectNode,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding GroupSourceList}" ItemTemplate="{StaticResource template_Group}">
        </mc:MyTreeView>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值