mvvm - 如何使用MVVM Light在Silverlight 4中将guid参数传递给ViewModel构造函数

标签 mvvm silverlight-4.0 mvvm-light

我需要将一个id传递给我的viewmodel构造函数。此ID是外部的,它被传递到包含silverlight应用程序的网页。我正在使用MVVM Light框架。
我看过几篇有关将参数传递给viewmodel的文章,但是在所有这些文章中,参数都是全局的,或者可以在没有参数的情况下实例化。
在我的情况下,我需要在ViewModel的构造函数中使用GUID ID,并将其从另一个应用程序传递。

编辑:

这是定位器的代码:

public class ViewModelLocator
{
    public static IUnityContainer Container
    {
        get;
        private set;
    }

    /// <summary>
    /// Initializes a new instance of the ViewModelLocator class.
    /// </summary>
    public ViewModelLocator(Guid id)
    {
        Container = new UnityContainer();
    }


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


    #region Cautela Inventário

    public CautelaVM CautelaInventario
    {
        get
        {
            return Container.Resolve<CautelaVM>();
        }
    }

    #endregion
}

定位符在 View 中传递给DataContext,如下所示:

DataContext =“{Binding Source = {StaticResource Locator}}

编辑2:

现在可以了。这是我在 View ctor中添加的用于注册要在VM ctor中使用的GUID的代码:
ViewModel.ViewModelLocator.Container.RegisterType<CautelaVM>(new InjectionConstructor(id));

最佳答案

如果您使用的是MVVM light和ViewModelLocator,则可以将GUID传递给它。一旦定位器知道了GUID,您就可以使用SimpleIoc注册它,并将其用作依赖项。

关于mvvm - 如何使用MVVM Light在Silverlight 4中将guid参数传递给ViewModel构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25200600/

相关文章:

wpf - 如何使用 MVVM Light for WPF 在窗口中导航?

c# - WPF: ListView :使用 MVVM 模式在 ListView 项目上绑定(bind)双击事件

MvvmCross:ShowViewModel 是否总是构造新实例?

c# - 如何访问嵌套在 View 模型中的 ObservableCollection

wcf - 银光 : WCF getting error on server but localhost works fine

mvvm - Silverlight : MVVM and re-initializing form

windows-phone-7 - "Refresh"使用 WP7 的 Mvvm-light 工具包进行枢轴控制

ios - 我如何将协调器与 UIITabBarController 一起使用?

c# - MVVM 设计感觉太笨重,我做错了吗?

mvvm - 在MEF中公开第三方可视控件的正确方法