微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调用现成的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"));
            }
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐