我需要将一个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/