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“多选”,显示效果较差。

  • 相关阅读:
    appium+python界面滑动
    selenium+python元素定位总结
    PAT甲级1017. Queueing at Bank
    PAT甲级1016. Phone Bills
    PAT甲级1014. Waiting in Line
    PAT甲级1013. Battle Over Cities
    PAT甲级1012. The Best Rank
    PAT甲级1010. Radix
    PAT甲级1003. Emergency
    hihocoder1320 160周 压缩字符串
  • 原文地址:https://www.cnblogs.com/super86/p/2755790.html
Copyright © 2011-2022 走看看