您是不是在關注MVC模式而不是在關注分離角度看待這個問題?我看到它的方式,你的問題比較MVVM和MVC。
有不同的MVVM方法:首先是View-First,ViewModel和Marriage類型。我婚姻類型你可以有另一個類,這些視圖和ViewModel結婚。上述類首先在任何東西之前加載,實例化View和ViewModel然後結合兩者。
public class SomeScreen : ScreenBase, IScreen
{
[Import(typeof(ISomeViewModel))]
public IViewModel ViewModel
{
get { return this.GetPropertyValue(ApplicationProperties.ViewModel); }
set {
this.SetPropertyValue(ApplicationProperties.ViewModel, value);
RaisePropertyChanged(ApplicationProperties.ViewModel);
}
}
#region Constructor
public MainScreen()
{
CompositionInitializer.SatisfyImports(this);
}
#endregion
#region Methods
public override IView GetViewToDisplay()
{
IView view = new MainView();
//Or maybe have a mechanism here based on settings which view to pair up with this.
view.ViewModel = this.ViewModel;
this.ViewModel.View = view;
return view;
}
#endregion
}
有了這個例子,就他們之間也沒有因爲接口的依賴關係的完全分離,你可以在一大堆的功能添加到屏幕/控制器了。
是不是這樣ViewModel在MVVM中作爲控制器? – Arseny 2011-04-10 13:49:59
我的觀點是它不應該:它違反了分離關注的原則。維護視圖的狀態和編排View和Model的邏輯顯然是兩個應該分開的大任務,這就是MVC的C背後的原因 – user310291 2011-04-10 14:26:24