(一)RI架構分析

來源:互聯網
上載者:User

      StockTraderRI是Prism中內建的一個簡易的股票類比系統。這裡我們只討論它的WPF版本。如下:

      讓我們根據之前學習的Prism架構來進行分析,這個系統在結構上是由4個Module組成的,它們都位於的Module檔案夾中,分別名為Market、News、Position和Watch:

      我們可以從StockTraderRI項目的StockTraderRIBootstrapper類的GetModuleCatalog方法中看到這4個Module之間的依賴關係:

protected override IModuleCatalog GetModuleCatalog(){var catalog = new ModuleCatalog();catalog.AddModule(typeof(MarketModule)).AddModule(typeof(PositionModule), "MarketModule").AddModule(typeof(WatchModule)).AddModule(typeof(NewsModule));return catalog;}

      (其他幾個項目——StockTraderRI.Infrastructure是4個Module都要使用的公用類庫,非常重要,我們後面會對其逐步介紹;而StockTraderRI.ChartControls則是包括了各種圖表的控制項陳列庫,與Prism架構是無關的,於是我在自己的實現中只是添加了對這個dll的引用,而沒有任何源碼實現,也不對其代碼進行分析)。

      讓我們沿著Module這條線索繼續探究下去,去發現每個Module中的View與Region的對應關係。要知道,Module只是“銀槍蠟鼠頭”,具體的介面是由Module中所包括的若干小的View來完成的,而Region則是承載一個或多個View的容器。

      從大處著眼,StockTraderRI是由4個Region組成的,如所示:

      這4個Region都定義在StockTraderRI.Infrastructure項目的枚舉RegionNames中:

public static class RegionNames{public const string MainToolBarRegion = "MainToolBarRegion";public const string MainRegion = "MainRegion";public const string OrdersRegion = "OrdersRegion";public const string SecondaryRegion = "SecondaryRegion";public const string ActionRegion = "ActionRegion";public const string ResearchRegion = "ResearchRegion";}

      注意到,枚舉中多了2個Region,分別是OrdersRegion和SecondaryRegion。這裡牽扯到了Composite View的技術。

      在ActionRegion中,承載了OrdersView,而就在這個xaml中,嵌套了OrdersRegion,而OrdersRegion則承載了OrderCompositeView。如所示。

      在Shell這個View中,有一行聲明引用:

infBehaviors:RegionPopupBehaviors.CreatePopupRegionWithName="{x:Static inf:RegionNames.SecondaryRegion}"

      就是說,在SecondaryRegion中,承載了NewsReader這個View,這是用來在點擊新聞串連時彈出新表單的。關於這個細節技術,我們等到了News這個Module以後再討論。

      那麼,相應地又有多少View呢?我試著統計了一下,共計4大類11個,列舉如下:

      1.其中6個View對應於:

View

被哪個Region承載

所在Module

TrendLineView

ResearchRegion

Market

ArticleView

ResearchRegion

News

OrdersView

ActionRegion

Position

PositionPieChartView

ResearchRegion

Position

PositionSummaryView

MainRegion

Position

AddWatchView

MainToolBarRegion

Watch

      2.上面圖中的OrdersView嗎?它是由3個View複合而成的,列舉如上。

View

被哪個Region承載

所在Module

描述

OrderCompositeView

OrdersView中的OrdersRegion

Position

 

OrderCommandsView

內含在OrderCompositeView中

Position

Submit/Cancel按鈕

OrderDetailsView

內含在OrderCompositeView中

Position

Bug/Sell

      3.NewsReader是在點擊ArticleView時彈出的,如所示。

View

被哪個Region承載

所在Module

NewsReader

SecondaryRegion

News

      4. WatchListView是在AddWatchView中輸入股票號後展示的,如所示。

View

被哪個Region承載

所在Module

WatchListView

MainRegion

Watch

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.