调用现成的WCF方法制作RadTreeView功能


首先设计页面

<telerik:RadTreeView x:Name="radTreeView" Margin="8"
        IsLoadOnDemandEnabled="True" IsExpandOnSingleClickEnabled="True"
        LoadOnDemand="radTreeView_LoadOnDemand"/>

页面载入的逻辑,其中优先定义全局变量

        private EmiteServiceContractClient wsEmiteClient;
        private RadTreeViewItem treeViewItem=new RadTreeViewItem();

        private ObservableCollection<MetricNode> RootNode { get; set; }

        private ObservableCollection<MetricNode> ChildNode { get; set; }

调用WebService,设置接入的地址,以及连接登入,然后执行方法

     public MainPage()
        {
            InitializeComponent();
            wsEmiteClient = new EmiteServiceContractClient();
            wsEmiteClient.Endpoint.Address = new System.ServiceModel.EndpointAddress(new Uri(App.webServiceURL));
            TempToken.CreateScopeAndSecurityToken(wsEmiteClient.InnerChannel);
            wsEmiteClient.GetRootNodes_OneView2Completed -= wsEmiteClient_GetRootNodes_OneView2Completed;
            wsEmiteClient.GetRootNodes_OneView2Completed += wsEmiteClient_GetRootNodes_OneView2Completed;
            wsEmiteClient.GetRootNodes_OneView2Async();
        }

当radTreeView控件执行载入时触发逻辑。首先调用webservice获得余下子节点,然后获得点击的RadTreeViewitem项,并执行获得子节点的方法

  private void radTreeView_LoadOnDemand(object sender, Telerik.Windows.RadRoutedEventArgs e)
        {
            wsEmiteClient.GetChildNodes_OneView2Completed -= wsEmiteClient_GetChildNodes_OneView2Completed;
            wsEmiteClient.GetChildNodes_OneView2Completed += wsEmiteClient_GetChildNodes_OneView2Completed;

            RadTreeViewItem clickItem = e.OriginalSource as RadTreeViewItem;;
            treeViewItem = clickItem;
            GetChildrenMetrics2(clickItem.Tag.ToString());

        }


定义添加子节点的方法
        private void AddTreeViewItems()
        {
            foreach (MetricNode m in RootNode)
            {    
                RadTreeViewItem category = new RadTreeViewItem();
                (category).Header = m.MetricName;
                category.Foreground = new SolidColorBrush(Colors.Green);
                category.Tag = m.NodeId;
                radTreeView.Items.Add(category);
            }
    
        }


webservice(GetRootNodes的回调函数)
   private void wsEmiteClient_GetRootNodes_OneView2Completed(object sender, GetRootNodes_OneView2CompletedEventArgs e)
        {
            if (e.Error == null)
            {
                if (e.Result != null && e.Result.Count > 0)
                {
                    RootNode = e.Result;
                    AddTreeViewItems();
           
                }
            }
            else
            {
                //Common.LogError(ErrorHandler.GetFullErrorMessage(e.Error, "SvcModelViewModel"));
            }
        }


根据parentId得到子节点的方法
  private void GetChildrenMetrics2(string parentId)
        {
            TempToken.CreateScopeAndSecurityToken(wsEmiteClient.InnerChannel);
            wsEmiteClient.GetChildNodes_OneView2Completed -= wsEmiteClient_GetChildNodes_OneView2Completed;
            wsEmiteClient.GetChildNodes_OneView2Completed += wsEmiteClient_GetChildNodes_OneView2Completed;
            wsEmiteClient.GetChildNodes_OneView2Async(new MetricNodeRequest() { NodeId = int.Parse(parentId) });
        }


得到子节点(GetChildNodes)的webservice的回调函数。
 private void wsEmiteClient_GetChildNodes_OneView2Completed(object sender, GetChildNodes_OneView2CompletedEventArgs e)
        {
            
            if (e.Error == null)
            {
                if (e.Result != null && e.Result.Count > 0)
                {
                    ChildNode = e.Result;
                    if (ChildNode!=null&&ChildNode.Count>0)
                    {
                        foreach (MetricNode metricNode in ChildNode)
                        {
                            RadTreeViewItem product = new RadTreeViewItem();
                            product.Header = metricNode.MetricName;
                            product.Tag = metricNode.NodeId;
                            treeViewItem.Items.Add(product);
                        }
                    }

                }
            }
            else
            {
                //Common.LogError(ErrorHandler.GetFullErrorMessage(e.Error, "SvcModelViewModel"));
            }
        }



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值