2011-02-16 120 views
6

我正在爲我的WPF應用程序使用MVVMLight工具包。 現在我正在通過Lauren's MIX 10的演示示例。 示例代碼位於SL中,並且使用了UnityContainer。 MVVMLight工具包爲WPF提供的模板不使用unitycontainer概念。我如何使用WPF中的UnityContainer。實現MVVM Light工具包WPF Unity

我現在不是現在如果我的問題甚至是有道理的。我沒有看到有關如何使用ViewModelLocator的任何文檔。也許有人可以提供一個樣本或勞倫在MIX使用的演示WPF版本

回答

1

我會建議使用託管擴展框架。它在.NET 4中,我將自己從統一轉換到MEF。當您的應用程序不斷增長時,我的工作非常棒您可以通過使用谷歌搜索找到大量的信息。 祝你好運!

+0

但我正在使用.NET 3.5 :( – xaria 2011-02-17 03:32:13

4

我使用統一的WPF(MVVM光)的方法是這樣的:

我的應用程序根目錄創建一個引導程序類,是這樣的:

public class Bootstrapper 
{ 
    public IUnityContainer Container { get; set; } 

    public Bootstrapper() 
    { 
     Container = new UnityContainer(); 

     ConfigureContainer(); 
    } 

    private void ConfigureContainer() 
    { 
     Container.RegisterType<IMyRepo, MyRepo>(); 
     Container.RegisterType<MainViewModel>(); 
    } 
} 

這是我的引導程序。我也註冊了ViewModels,因爲在Locator中很容易創建它們。

接下來,我創建了ViewModelLocator的構造函數中boostrapper,我在這裏解決每一個視圖模型,如:

public class ViewModelLocator 
{ 
    private static Bootstrapper _bootStrapper; 

    static ViewModelLocator() 
    { 
     if (_bootStrapper == null) 
      _bootStrapper = new Bootstrapper(); 
    } 

    public MainViewModel Main 
    { 
      get { return _bootStrapper.Container.Resolve<MainViewModel>(); } 
    } 
} 

正如你看到的,我ViewModelLocator很簡單,它只是創造引導程序和解決視圖模型,並這些虛擬機將通過容器解決他們的依賴關係:)

也許有一個最佳的方式來實現這一點,但這確實是一個好的開始。

相關問題