silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了silverlight 中的树形菜单大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

第一步是创建一个类:用于存放数据   public class TreeModel : INotifyPropertyChanged     {         public String ID { get; set; }         public String Name { get; set; }         public int TypEID { get; set; }        
@H_607_6@
@H_607_6@
第一步是创建一个类:用于存放数据 
 public class TreeModel : INotifyPropertyChanged
    {
        public String ID { get; set; }
        public String Name { get; set; }
        public int TypEID { get; set; }
        public String ParentID { get; set; }
        private bool? _shouldInstall;
        public bool HasSubcomponents
        {
            get
            {  return Childs.Count > 0;  }
        }
        //是否允许Feature进行安置
        public bool? ShouldInstall
        {
            get {  return _shouldInstall;  }
            set
            {
                if (value != _shouldInstall)
                    _shouldInstall = value;
                    OnPropertyChanged("ShouldInstall");
            }
        }
        public Collection<TreeModel> Childs { get; set; }
        public TreeModel()
        {
            Childs = new Collection<TreeModel>();
            ShouldInstall = false;
        }
        public event PropertyChangedEventHandler PropertyChanged;
        //实现接口INotifyPropertyChanged定义函数
        private void OnPropertyChanged(String propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (null != handler)
            {
                handler.Invoke(this,new PropertyChangedEventArgs(propertyName));
            }
        }
    }
第二部
wcf 返回的数据中进行赋值
  private void client_GetAgencyLineVehicleCompleted(object sender,GetAgencyLineVehicleCompletedEventArgs E)
        {
            if (e.Error != null)
            {
                messageBox.Show(e.Error.messagE);
            }
            else
            {
                if (e.Result != null)
                    AgencyLineVehicle agencyLineVehicle = e.Result;
                    ObservableCollection<Agency> AgencyCollection = agencyLineVehicle.Agency;
                    ObservableCollection<DepthDataservice.Line> LineCollection = agencyLineVehicle.Line;
                    ObservableCollection<DepthDataservice.Vehicle> VehicleCollection = agencyLineVehicle.Vehicle;
                    collection<TreeModel> treeItems = new ObservableCollection<TreeModel>();
                    var agency = AgencyCollection.Where(a => Convert.ToInt32(a.ParentId) == 0);
                    foreach (var item in agency)
                        TreeModel treemodel = new TreeModel();
                        treemodel.ID = item.Id;
                        treemodel.Name = item.Name;
                        treemodel.ParentID = item.ParentId;
                        treeItems.Add(treemodel);
                        RecursionLine(LineCollection,VehicleCollection,treemodel);
                        RecursionAgecny(AgencyCollection,LineCollection,item,treemodel);
                    partTree.Itemssource = treeItems; //进行绑定到treeview 数据源上
            }
        }
        //递归机构的数据
        private void RecursionAgecny(ObservableCollection<Agency> AgencyCollection,ObservableCollection<DepthDataservice.Line> LineCollection,ObservableCollection<DepthDataservice.Vehicle> VehicleCollection,Agency item,TreeModel treeItems)
        {
            var s = AgencyCollection.Where(a => Convert.ToInt32(a.ParentId) == Convert.ToInt32(item.Id));
            if (s != null)
            {
                foreach (var child in s)
                    TreeModel treemodel = new TreeModel();
                    treemodel.ID = child.Id;
                    treemodel.Name = child.Name;
                    treemodel.ParentID = child.ParentId;
                    treemodel.TypEID = 0;
                    treeItems.Childs.Add(treemodel);
                    RecursionLine(LineCollection,treemodel);
                    RecursionAgecny(AgencyCollection,child,treemodel);
            }
            else
            {
            }
        }
        //线路递归
        private void RecursionLine(ObservableCollection<DepthDataservice.Line> LineCollection,TreeModel treeModel)
        {
            var s = LineCollection.Where(a => Convert.ToInt32(a.AgencyId) == Convert.ToInt32(treeModel.ID));
            if (s != null)
            {
                foreach (var child in s)
                    TreeModel treemodel = new TreeModel();
                    treemodel.ID = child.Id;
                    treemodel.Name = child.Name;
                    treemodel.ParentID = child.AgencyId;
                    treemodel.TypEID = 1;
                    treeModel.Childs.Add(treemodel);
                    RecursionVehicle(VehicleCollection,treemodel);
                    RecursionLine(LineCollection,treemodel);
            }
            else
            {
            }
        }


前台界面是:
样式的抒写
    <sdk:HierarchicalDataTemplate x:Key="NodeTemplate" Itemssource="{Binding Childs}">
            <!--<checkBox Content="{Binding NamE}"/>-->
            <!--<TextBlock Text="{Binding NamE}"></TextBlock>-->
            <StackPanel Orientation="Horizontal">
                        IsTabStop="false"                       
                        IsThreeState="{Binding HasSubcomponents}"
                        Ischecked="{Binding ShouldInstall,Mode=TwoWay}"
                        Click="ItemcheckBox_Click"
                        content="{Binding NamE}"
                        />
                <!--<ContentPresenter Content="{Binding NamE}" />-->
            </StackPanel>
        </sdk:HierarchicalDataTemplate>

 <sdk:TreeView Margin="0,2.5,2.5" BorderThickness="1" Height="472" x:Name="partTree" ItemTemplate="{Staticresource NodeTemplatE}"/>
@H_644_301@

大佬总结

以上是大佬教程为你收集整理的silverlight 中的树形菜单全部内容,希望文章能够帮你解决silverlight 中的树形菜单所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
猜你在找的silverlight相关文章