Toolkit二进制版本:4.0.30319
使用SimpleIoc和SL5二进制文件注册一个带有密钥的viewmodel是不成功的。我唯一一次工作就是在SL4项目中使用Mix 11 navigation sample中的SL4二进制文件。
以下是使用SimpleIoc注册我的VM的代码:
if (!SimpleIoc.Default.Contains<DeviceListDetailViewModel>(commandParam))
{
SimpleIoc.Default.Register(
() => new DeviceListDetailViewModel(this.Repository, this.NavService) { NavParameter = commandParam }, commandParam);
}
这是我在视图中检查实例并获取“Item not Found”的地方:
if (DataContext == null)
{
var url = e.Uri.ToString();
NavParam = url.Substring(url.IndexOf("?") + 1);
if (!SimpleIoc.Default.Contains<DeviceListDetailViewModel>(NavParam))
{
MessageBox.Show("Item not found");
return;
}
var vm = SimpleIoc.Default.GetInstance<DeviceListDetailViewModel>(NavParam);
DataContext = vm;
}
我做错了什么?
答案 0 :(得分:0)
注册视图模型不会创建实例,除非您为createInstanceImmediate传入true。因此,在您调用Contains时,没有创建任何实例。
您可以在documentation
中看到