2011-07-22 69 views
3

有沒有辦法勾搭CompositionContainer的內部?例如,假設任何時候在以「View」結尾的輸出結果上調用一個導入,我可能希望將一個以「ViewModel」結尾的輸出注入到它的DataContext中。MEF和MVVM - 添加約定的方式?

有沒有辦法做到這一點?我試圖避免這樣的代碼在每一個景觀:

[Export("MainView")] 
    public partial class MainView : Window 
    { 
     [ImportingConstructor] 
     public MainView([Import("MainViewModel")] dynamic viewModel) 
     { 
      InitializeComponent(); 

      DataContext = viewModel; 
     } 
    } 

將是很好的簡化,只是這一點,並使用約定:

 [Export("MainView")] 
     public partial class MainView : Window 
     { 
      public MainView() 
      { 
       InitializeComponent(); 
      } 
     } 
+1

到目前爲止我所想到的最好方法是使用IViewLocator服務來完成這項工作,然後始終使用它來導入視圖。 – jonathanpeppers

回答