最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#?CM框架實(shí)現(xiàn)多頁(yè)面管理的實(shí)例代碼

 更新時(shí)間:2022年03月14日 16:28:46   作者:zls366  
這篇文章主要介紹了C#?CM框架下一行代碼實(shí)現(xiàn)多頁(yè)面管理,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

概述

之前我分享過(guò)一個(gè)wpf的項(xiàng)目實(shí)踐,主頁(yè)面左側(cè)是個(gè)listbox,每次選擇改變后呈現(xiàn)對(duì)應(yīng)的頁(yè)面,界面圖如下

要實(shí)現(xiàn)這樣一個(gè)功能,我之前是采用傳統(tǒng)方式實(shí)現(xiàn)的,本節(jié)我采用CM框架下的Conductor<T>去實(shí)現(xiàn),這樣代碼量可以大幅度壓縮,核心代碼就一行。

傳統(tǒng)方式

后臺(tái)代碼:①定義集合并添加數(shù)據(jù):

public IViewModel ActiveWindowView { get; set; }
       public ObservableCollection<string> ListBoxItems { get; set; }
       public string SelectedItem { get; set; }
ListBoxItems = new ObservableCollection<string>() { };
           ListBoxItems.Add("ShellView");
           ListBoxItems.Add("EventAggregatorView");
           ListBoxItems.Add("ConductorView");
           ListBoxItems.Add("MatchTemplateView");
           ListBoxItems.Add("IndicatorLightView");
           ListBoxItems.Add("MemorandumView");
           ListBoxItems.Add("FTPTestView");

 ?、趌istbox選擇改變后切換頁(yè)面:

public void ListBoxItems_SelectionChanged()
       {
          switch(SelectedItem)
           {
               case "ShellView":
                   ActiveWindowView = new ShellViewModel();break;
               case "EventAggregatorView":
                       ActiveWindowView = EventAggregatorViewModel.Instance; break;
               case "ConductorView":
                   ActiveWindowView = new ConductorViewModel(); break;
               case "MatchTemplateView":
                   ActiveWindowView = new MatchTemplateViewModel(); break;
               case "IndicatorLightView":
                   ActiveWindowView = new IndicatorLightViewModel(); break;
               case "MemorandumView":
                   ActiveWindowView = IoC.Get<MemorandumViewModel>(); break;
               case "FTPTestView":
                   ActiveWindowView = new FTPTestViewModel(new FTPConfig()); break;
               default:break;
           }
       }

 ?、矍芭_(tái)綁定:

<ListBox Name="ListBoxItems" Grid.Column="0" SelectedItem="{Binding SelectedItem}" Margin="2"
                 cal:Message.Attach="[Event SelectionChanged] = [Action ListBoxItems_SelectionChanged]"/>
            <ContentControl Name="ActiveWindowView"/>

利用CM框架下Conductor<T>實(shí)現(xiàn)

① 后臺(tái)代碼:首先是需要繼承Conductor<IViewModel>.Collection.OneActive這樣才能使用這個(gè)類下面的方法和屬性,其次是構(gòu)造函數(shù)需要添加接收的接口IEnumerable<T>,這樣改造完代碼如下:

public MainWindowViewModel(IEnumerable<IViewModel> modules)
      {
          Items.AddRange(modules);
          ActivateItem(Items.FirstOrDefault(vm => vm.GetType() ==typeof(IndicatorLightViewModel)));
      }

  如果不考慮首次激活的頁(yè)面那核心代碼就只有一句:

Items.AddRange(modules);

②前臺(tái)代碼:

<ListBox Name="Items" Grid.Column="0"  Margin="2" DisplayMemberPath="DisplayName"/>
 <ContentControl Name="ActiveItem"/>

這樣前后臺(tái)就設(shè)置完事了,繼承了一個(gè)框架的多屏幕管理類,使得前后臺(tái)代碼大幅度精簡(jiǎn),功能上也沒(méi)打折扣,準(zhǔn)確說(shuō)是更強(qiáng)大了,這就是CM框架的優(yōu)勢(shì)所在。

到此這篇關(guān)于C# CM框架下一行代碼實(shí)現(xiàn)多頁(yè)面管理的文章就介紹到這了,更多相關(guān)C# CM框架多頁(yè)面管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

揭阳市| 晋宁县| 苗栗市| 潼南县| 伊宁市| 双鸭山市| 大关县| 米泉市| 甘德县| 墨脱县| 收藏| 克拉玛依市| 海口市| 仁怀市| 平阳县| 木里| 福海县| 贵港市| 长宁县| 诸暨市| 阿克陶县| 甘孜| 湘潭县| 岳阳县| 招远市| 新平| 博兴县| 柳林县| 达拉特旗| 内丘县| 荆门市| 玛曲县| 滨海县| 涞源县| 民权县| 陕西省| 深圳市| 甘德县| 锡林浩特市| 崇礼县| 年辖:市辖区|