我一直在尋找關於如何最好地接近我正在處理的新應用程序的想法,這將是PRISM 2/WPF應用程序。特別是在PRISM附帶的View Injection示例應用程序中,我注意到所有視圖都實現了一個允許演示者(或ViewModel)與View交互的界面。MVVM - 視圖是否應該引用Presenter/ViewModel?
在過去,我已經做了這一輪以相反的方式,我注入了主持人到視圖,以便視圖可以直接打電話到方法上演示有點像這樣:
public partial class SomeView : ModuleBase
{
private ISomePresenter _somePresenter;
public SomeView (ISomePresenter somePresenter):this()
{
// Give the view a reference to the presenter
_somePresenter = somePresenter;
// Bind the View to the presenter
DataContext = _somePresenter;
}
private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
// The view can call actions directly on the presenter (OK I should probably use a command for this)
_somePresenter.SomeAction();
}
}
的技術上面對我來說似乎是合理的,但看着樣本,我開始質疑這種方法。有沒有人有意見(沒有雙關語意)在這方面的最佳途徑?
- 演示添加到視圖,並獲得與演示
- 交互的視圖的視圖添加到演示,讓演示者與視圖交互
- 完全不同的東西,我沒有想到了嗎?
我最近很想知道這個。我幾乎完全使用DataTemplates,並開始感覺DataTemplate是視圖。這意味着指定DataType參數將視圖耦合到視圖模型。我對這種類型的耦合沒有問題,但它違背了Prism4文檔中的一句話:「同樣,視圖理想上不應該依賴視圖模型的任何特定實現。」對我來說,視圖是丟棄的部分,可以在任何時候被另一個視圖取代。讓它與視圖模型相結合是可以接受的。 – Christo 2011-04-25 15:09:14