1

工具包二进制版本:4.0.30319

我在使用带有 SL5 二进制文件的 SimpleIoc 的密钥注册视图模型时没有成功。我让它工作的唯一一次是当我在 SL4 项目中使用Mix 11 导航示例中的 SL4 二进制文件时。

这是使用 SimpleIoc 注册我的 VM 的代码:

if (!SimpleIoc.Default.Contains<DeviceListDetailViewModel>(commandParam))
{
     SimpleIoc.Default.Register(
         () => new DeviceListDetailViewModel(this.Repository, this.NavService) { NavParameter = commandParam }, commandParam);
}

这是我在视图中检查实例并获得“未找到项目”的地方:

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;
 }

我究竟做错了什么?

4

1 回答 1

0

注册视图模型不会创建实例,除非您为 createInstanceImmediately 传入 true。因此,在您调用 Contains 时,没有创建任何实例。

您可以在文档中看到

于 2017-08-23T14:51:37.700 回答