zoukankan      html  css  js  c++  java
  • RadTreeView按需加载

    XML:

    .....

    LoadOnDemand="ExplorerTreeView_LoadOnDemand"

    >

    后台代码:

    private void ExplorerTreeView_LoadOnDemand(object sender, Telerik.Windows.RadRoutedEventArgs e)
            {
                RadTreeViewItem item = e.OriginalSource as RadTreeViewItem;            
                if (item.Item is VoyageVO)
                {
                    var voyage = item.Item as VoyageVO;                
                    ObservableCollection<LegVO> Legs = new ObservableCollection<LegVO>();

                    if (item != null && item.Items.Count < 1)
                    {
                        Task.Factory.StartNew(() =>
                        {
                            Legs = _IndoorSampleCheckHttpProxy.GetLegsByVoyageID(voyage.ID);
                            if (Legs == null) return;
                            //voyage.Legs.AddRange(Legs);
                            Application.Current.Dispatcher.Invoke(new Action(delegate()
                            {
                            item.ItemsSource = Legs;
                            }));
                        })
                        .ContinueWith((t) =>
                        {                        
                            Application.Current.Dispatcher.Invoke(new Action(delegate()
                            {
                                if (Legs.Count == 0)
                                    item.IsLoadOnDemandEnabled = false;                                
                                else
                                    item.IsLoadingOnDemand = false;
                            }));
                        });
                    }
                }
                else if (item.Item is LegVO)
                {
                    var leg = item.Item as LegVO;
                    ObservableCollection<StationVO> Stations = new ObservableCollection<StationVO>();
                    if (item != null && item.Items.Count < 1)
                    {
                        StationQueryInformation stationQueryInformation = new StationQueryInformation();
                        stationQueryInformation.LegID = leg.ID;
                        Task.Factory.StartNew(() =>
                        {
                            Stations = _IndoorSampleCheckHttpProxy.GetStationsByLeg(stationQueryInformation);
                            //leg.Stations.AddRange(Stations);
                            Application.Current.Dispatcher.Invoke(new Action(delegate()
                            {
                                item.ItemsSource = Stations;
                            }));
                        })
                        .ContinueWith((t) =>
                        {
                            item.Dispatcher.Invoke(new Action(delegate()
                            {
                                if (Stations.Count == 0)
                                    item.IsLoadOnDemandEnabled = false;
                                else
                                    item.IsLoadingOnDemand = false;
                            }));
                        });
                    }
                }
            }

    标记部分为:两种操作都能达到目的,前一种会造成TreeViewItem“多选”,显示效果较差。

  • 相关阅读:
    精选css动画库及其使用
    使用js reduce方法求数组中出现次数最多的元素
    文字横向滚动效果,公告效果
    判断是否是微信端
    移动端input/textarea输入框光标高度兼容及其他事项
    更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支
    Git 常见问题整理
    CentOS 7.0 安装配置LAMP服务器方法(Apache+PHP+MariaDB)
    centos7安装eclipse
    centos7安装mplayer的方法
  • 原文地址:https://www.cnblogs.com/super86/p/2755790.html
Copyright © 2011-2022 走看看