其實MediaCenter的模式於asp.net的方式非常相似,C#代碼相當於MCML代碼部分的後臺。其實這一部分的內容不需要了解很多就可以上手寫MC的程序了,掃一遍API也就基本上可以了。
貼上這部分的整理結果。
MediaCenter編程C#
MCML與C#通過.net properties進行通信
MCMl不能使用C#的變量,只能定義properties 含有get和set的
它應該是基於ModeItem並且在set裏應該包含FirePropertyChanged
Session class
程序的入口類 維護狀態和數據以及一些選項
media center程序創建時將創建兩個類
第一個是Session class繼承ModeItem它將維持在一個media center程序的整個生命週期
第二個是一個繼承了IAddinModule和IAddInEntryPoint的類
它將實現IAddinModule的Intialize和Unintialize兩個接口
和IAddInEntryPoint的Launch一個接口
Intialize和Unintialize
在程序啓動和結束時調用,Intialize裏不要做過多的加載工作,它會阻塞顯示直到它執行完返回
甚至一個小的操作都可能導致Media Center報告程序被鎖死
在保存一些數據的時候會經常發生這種找不到程序的情況
Launch
新的MCML要被顯示或者一些參數傳遞給程序是將調用詞函數
同樣的 ,這個函數裏不要做太多的操作
一般情況是新建一個PageSession後就立即返回
PageSession
每個程序至少包含一個,負責跟蹤程序進程
經常用到的一個是HistoryOrientedPageSession
它將記錄用戶的瀏覽軌跡等很多信息並且支持backspace之類的回退命令
事實上用戶的界面顯示是從這個類開始的 通過調用接口Navigate
一個程序需要的基本類和接口代碼:
Public class Base:IAddInModule, IAddInEntryPoint
{
Public static HistoryOrientedPageSeeion History;
Public void Intialize(Dictionary<String, Objiect> appInfo,
Dictionary<String,Object> entryPointInfo)
{}
Public void Unintialize()
{}
Public void Launch(AddInHost host)
{
History = new HistoryOrientedPageSession();
History.Go(“resx://Assm………”);
}
}
程序被拉起時,先調用Intialize 然後調用Launch
創建一個HistoryOrientedPageSession 開始記錄管理我們的路徑
然後進入mcml頁
最後程序退出時 將調用Unintialize 可以把沒有做完的事情放在這裏做,但是還是儘量使其操作越少越好!!!