<a href="http://www.cnblogs.com/li-peng/p/3985727.html">Caliburn.Micro學習筆記目錄</a>
用了幾天時間看了一下開源架構Caliburn.Micro
文檔也寫的很詳細,自己在看它的文檔和代碼時寫了一些demo和筆記,還有它實作的原理記錄一下
學習Caliburn.Micro要有MEF和MVVM的基礎
先說一下他的命名規則和引導類
以後我會把Caliburn.Micro的
Actions
IResult,IHandle
IConductor ,Conductor<T>
這些常用功能寫下來。
先看一下Caliburn.Micro的大概流程,畫的不太好,先這樣吧

好了,我們開始今天的筆記。
這個例子是有父窗體打開一下子窗體的小功能
程式要引入的三個類庫
Caliburn.Micro
System.Windows.Interactivity
和
System.ComponentModel.Composition
上邊兩個Caliburn.Micro的例子裡有提供下邊的在Vs裡就能找到
看一下引導類
我們要實作Bootstrapper<T>這個類
一般我用我MEF做為容器,重寫這個類的三個方法,寫法也比較固定,就像上邊我寫的那這樣
如果有自己的一些東西需要配置可以寫在Config裡
除了上邊的三個方法還有OnStartup和OnExit分别是程式進入和退出的執行事件,可根據自己的需要做相應的重寫
還要在App.xaml裡加入
這樣程式 就會打開Export IShell的窗體
原理
是根據反射有MEF 去查找容器裡是否有Exprort IShell的ViewModel如果有就根據名稱去比對相應的View映射關系并打開,
如果沒有找到就抛出異常
MainViewModel
你會發現MainView的背景代碼和前台都沒有指定ViewModel
這是Caliburn.Microj裡很棒的一點命名比對規則,原理:它用利用反射和正規表達式去比對View和ViewModel
系統現有的是自動比對名稱為View和ViewModel 、PageView和PageViewModel結尾的窗體和類
如果想自己定義一種比對規則也是可以的,我這就就不講了
運作起來你會發現
TextBlock和Button的屬性和事件也自動比對上了
原理:
比對好View和ViewModel後
去查找View裡的元素名稱和viewModel裡的方法或屬性是否有一至的如果有一至的就綁定
!注意!:給控件命名的時候如txt_abc這樣加下劃線Calibrn會把這個名字分開
成txt和abc兩個屬性它會去txt屬性裡去找abc屬性綁定
代碼裡打開子窗體是用的Caliburn.Micro自己的IWindowManager接口
這是一個專門用來打開窗體的類
它可以以Show() ShowDialog還有ShowPopup形式打開窗體
今天就先說到這,下次會寫一下Caliburn的Actions