2010-08-04 69 views

回答

1

我不認爲你可以避免不使用反射來調用InitializeComponent(以回答你的關於替代方法的問題)。避免代碼隱藏有好處和缺點,我看到的一個好處是雙擊任何控件都不再有效,無論是在Blend還是Visual Studio中。這「迫使」我從不爲某些行爲做出「快速修復」。

另一方面,做「快速修復」來驗證事情變得更加困難,所以這是一個交易 - 你必須做出決定。

在我的當前大項目之一中,我沒有代碼隱藏,大概沒有代碼隱藏的問題。 20%的XALM文件,其餘的我還沒有刪除它們(還)。

您可以實現拖放操作,而無需依賴代碼隱藏邏輯,我已經完成了我的Silverlight 4項目,該項目需要在沒有窗口邊框的情況下運行瀏覽器時處理某些操作。

根據您的MVVM實現和框架,您可以訪問視圖模型中的視圖。雖然應該儘可能避免這種情況,但有時這不是一個可行的解決方案。例如,Caliburn.Micro爲您提供了一種乾淨的方式來訪問視圖,方法是實現IViewAware接口並調用GetView方法。

5

我認爲這個問題最優雅的解決方案可能是忽略它。

您的項目中代碼隱藏文件的存在使您幾乎沒有花費。想出一些特殊的方案讓他們離開只是創建一些你必須記錄和管理的東西。 (並且弄清楚如何禁用,當你到達需要一個用戶控件的代碼隱藏文件,因爲遲早你會 - 例如,你不能實現拖放你的視圖模型)

你爲什麼要這樣對你自己?