我的問題實際上是關於使用MVVM啓動應用程序:使用MVVM管理複雜的UI
我的主屏幕將託管許多屏幕。我明白他們將是UserControls。
但我沒有看到我在哪裏實例化,然後當我想要,當我展示他們,當我隱藏他們?
邏輯不清楚。有人可以解釋我或指出我一個簡單明瞭的例子嗎?
感謝 約翰
我的問題實際上是關於使用MVVM啓動應用程序:使用MVVM管理複雜的UI
我的主屏幕將託管許多屏幕。我明白他們將是UserControls。
但我沒有看到我在哪裏實例化,然後當我想要,當我展示他們,當我隱藏他們?
邏輯不清楚。有人可以解釋我或指出我一個簡單明瞭的例子嗎?
感謝 約翰
想象一下,你有一個MainViewModel綁定到主屏幕。讓MainViewModel是一個單例類,它有一個'CurrentViewModel'屬性(INotifypropertyChanged實現)。現在,您可以實例化任何具體的視圖模型(基於命令/點擊)並分配實例如下
MainViewModel.Instance.CurrentViewModel = new SomeViewModel();
所以,現在你的主屏幕XAML將有
<Window>
<ContentControl Content="{Binding CurrentViewModel,Source={x:static vm:MainViewModel.Instance}}"
</Window>
您需要定義適當的每個ViewModels的DataTemplates(View to ViewModel Mapping)。這看起來像
<DataTemplate DataType="{x:Type vm:SomeViewModel}">
<view:SomeView/>
</DataTemplate>
這裏SomeView是UserControl對應的SomeVieModel。
希望這可以很簡單地解釋MVVM架構
你可以使用現有的應用程序框架,以幫助管理這個,而不是自己動手。 Caliburn特別是用IPresenter Component Model來解決這個問題。我確定也有其他人。
非常好的開始。爲什麼我需要DataTemplate? – user96547 2009-11-17 21:59:02
因爲這是WPF決定用哪個用戶控件ViewModel類需要實例化的方式。在您的應用程序中將會有很多DataTemplate聲明。主要在資源文件(或App.xaml) – 2009-11-17 22:03:01
這使我困惑,因爲我認爲綁定到視圖將是足夠的。你知道我可以看的完整(簡單)樣本嗎? – user96547 2009-11-17 22:05:30