2010-06-10 59 views
0

將用戶控件加載到MVVM-Light的窗口中的最佳做法是什麼? 哪裏創建UserControl實例,在ViewModel從窗口或直接在窗口中?MVVM-Light:將用戶控件加載到窗口中

+0

你能更具體一點嗎? VM絕對不應該創建一個UserControl。通常,控件通過數據模板注入或直接包含在窗口XAML中。 – 2010-06-10 22:04:14

回答

3

如果您擔心最佳做法,則您的虛擬機不應包含任何類似控件的UI特定代碼。例如,如果在虛擬機中有一個屬性控制視圖中控件的可見性,那麼該屬性應該是bool類型而不是「可見性」。該視圖將使用bool屬性來隱藏或顯示控件。

所以你有一個視圖(像一個窗口)哪個數據綁定對虛擬機。 VM中的一些屬性更改會導致窗口中的某些代碼創建並顯示用戶控件。

0

如果您能夠展示使用mvvm燈光的例子,我會很高興。 我也有問題想要與「子窗口」(用戶控件)主窗口顯示/隱藏按鈕點擊從主窗口。 所以我應該創建它們都在同一個地方讓我們說網格列,然後男性他們顯示/通過屬性綁定隱藏?

+0

我認爲這應該被重新修改,並提出一個新的問題,但由於它是從2010年2年半後downvote將是不利的。 – dumbledad 2012-12-04 14:33:16

2

我剛剛讀了this excellent post關於使用MVVM(Light)創建標籤式接口。它沒有談論用戶控件,但目標非常接近。很容易修改以支持用戶控件。

該方法是將選項卡控件綁定到可觀察的工作區集合(ViewModels)。當添加新的選項卡(或工作區)時,它將在ViewModel中實例化,添加到集合中,綁定到視圖並在DataTemplates的幫助下作爲新選項卡呈現。

相關問題