解析viewModel中的依赖项

时间:2014-06-21 09:11:39

标签: c# wpf mvvm mvvm-light

我有一个viewModel SupplierViewModel我通过使用MVVM灯ViewModelLocator实例将我的视图的datacontext设置为XAML中的viewModel。

这是我的观点:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         x:Class="RH_Maize.SupplierView"
         x:Name="UserControl"
         d:DesignWidth="1040"
         d:DesignHeight="630"
         DataContext="{Binding Supplier, Source={StaticResource Locator}}">

        <!--UI elements goes here-->

</UserControl>

这是我的ViewModel定位器:

 public class ViewModelLocator
{
    static ViewModelLocator()
    {
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

        SimpleIoc.Default.Register<MainViewModel>();


        if (ViewModelBase.IsInDesignModeStatic)
        {
            SimpleIoc.Default.Register<ISupplierDataService, SupplierDataServiceMock>();
        }
        else
        {
           SimpleIoc.Default.Register<ISupplierDataService, SupplierDataService>();
        }
    }


    #region Here we create and expose some of the applications viewModels

    /// <summary>
    /// Gets the Main property.
    /// </summary>
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
        "CA1822:MarkMembersAsStatic",
        Justification = "This non-static member is needed for data binding purposes.")]
    public MainViewModel Main
    {
        get
        {
            return SimpleIoc.Default.GetInstance<MainViewModel>();
        }
    }

    public SupplierViewModel Supplier
    {
        get
        {
            return new SupplierViewModel();
        }
    }
    }

    /// <summary>
    /// Cleans up all the resources.
    /// </summary>
    public static void Cleanup()
    {
    }
}

ViewModel:

public class SupplierViewModel : WorkspaceViewModel,IDataErrorInfo
{
   #region Fields

    readonly Supplier _supplier;
    readonly SupplierRepository _supplierRepository;
    private IDialogService _dialogService;

   #endregion //Fields

    #region Constructor

    public SupplierViewModel(Supplier supplier, SupplierRepository supplierRepository, IDialogService service)
    {
        _supplier = supplier;
        _supplierRepository = supplierRepository;
        _dialogService = service;
    }

    #endregion //Constructor

}

我的问题:

如何解决所有这些依赖关系?

我知道如何在UI上填充设计时间数据以支持视图中的设计时数据我想在viewModel中使用无参数构造函数?

0 个答案:

没有答案
相关问题