- 盡量使用代碼控制;
- 盡可能早的計劃好所有的用戶控件;這樣可以提前預期控件之間相互運作情況,便於整合項目;
- 嘗試分割不同功能到不同的用戶控件; 現在無論國內國外,開發隊伍通常來說都是3個人以上,分割不同功能到不同的用戶控件,可以減少相互之間的衝突和影響; 另外,在測試的時候發現問題,對於不同的小功能區域,方便Bug定位;另外也方便功能模塊的再利用。 這個是現在Web項目開發的一個常用規則。
- 盡量少用Loaded事件;
- 初始化的問題; 在每個用戶控件中,需要創建Initialize和Deinitialize公共方法。 在實際項目中,你可以把Event Handlers或者必須要運行一次的代碼,添加到Initialize方法中; 另外,也可以不用添加新的構造函數,直接傳遞參數到Initialize方法,通過New MyUserControl()使用這些參數; 最後,你可以使用Deinitialize方法清空控件,如果你調用了需要自定義的控件,使用Deinitialize方法是非常必要的;
- 不要在XAML添加Event Handles; 因爲XAML是屬於前臺設計人員,而Event Handling屬於開發人員,所以,Event Handler非常容易使用代碼進行添加;另外一個原因,如果你使用代碼添加了一個Event Handler,當該事件的控件名稱改變或者該控件被刪除,編譯器會提出錯誤說明; 但是如果把Event Handler放在XMAL,當該事件的控件名稱改變或者該控件被刪除,項目將返回一個常規異常,沒有詳細錯誤信息提示;
- 認真設計項目佈局; 我項目起步時,浪費了許多時間,在項目佈局上,如果,佈局合理,一定能節省很多開發時間;這樣就需要開發人員對Grid,StackPanel,Canvas,Border,Popup,ScrollViewer,DockPanel等佈局控件有深刻的瞭解;通常,你會發現,Grid非常適合做Header,Footer,Sidebar等等; 而複雜的佈局結構,建議使用Canvas,需要注意的是,如果Canvas的高和寬是固定的,這樣就很容易造成佈局混亂,這點一定要注意;如果需要調整子控件的佈局,推薦使用StackPanel;設計Silverlight項目佈局,通常我們習慣使用Expression Blend,但是,強烈建議你,在使用Blend後,需要在VS下對XAML代碼進行一次覈查,這樣可以確認各個控件的參數正確,同時也可以刪除Blend自動產生的多餘代碼;
- 盡量避免使用固定的高度值和寬度值;在不設置固定的高度和寬度時候,Silverlight會根據你的解析度自適應瀏覽器界面,同時,各個控件將會自動縮放,以及排列位置; 另外,儘量不要使用負值的Margin,防止樣式變形;
- 不要將機密信息放在代碼中; 衆所周知,Silverlight是一個客戶端技術;用戶在使用的同時,將會下載XAP文件到本地,這樣非常容易被反編譯; 所以,一定不要把敏感的機密數據放在代碼中;
- 不要使用Image作爲按鈕控件; 在Silverlight1.1中沒有Button控件,所以我們使用Image作爲按鈕; 但是在Silverlight2或者3中,已經提供了Button控件,我們需要儘量使用Button控件; 這個原則也適合其他控件,儘量使用Silverlight提供的控件,方便狀態管理和事件管理;
- 在項目性能上,儘量減少XAP的尺寸,提高加載項目速度,另外,減少各個用戶控件的載入時間; 避免使用Windowless=True; 使用Web Service進行服務器數據存取; 因爲Silverlight是運行在用戶主機的,所以不能直接和服務器或者數據庫進行通訊,當前有很多種方式可以存取服務器信息和數據庫,但是推薦使用Web Service(WCF),個人認爲這個方法是最簡單,最快捷的;
- 小心使用Isolated Storage; 一定不要把機密信息放在Isolated Storage;