gpt4 book ai didi

xaml - UWP + MvvmLight-定义为App.xaml资源的ViewModelLocator在设计模式下返回“拒绝访问”错误

转载 作者:行者123 更新时间:2023-12-03 10:44:14 28 4
gpt4 key购买 nike

我正在使用MVVMLight构建UWP应用,并且在设计模式下ViewModelLocator出现问题。

我创建了ViewModelLocator:

public class ViewModelLocator
{
public MainPageViewModel Main =>ServiceLocator.Current.GetInstance<MainPageViewModel>();


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

SimpleIoc.Default.Register<MainPageViewModel>();

if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IMainPageDataService, DesignMainPageDataService>();
}
else
{
SimpleIoc.Default.Register<IMainPageDataService, MainPageDataService>();
}
}
}

然后,我将其声明为App资源:
<Application.Resources>
<ResourceDictionary>
<viewModels:ViewModelLocator x:Key="Locator"></viewModels:ViewModelLocator>
</ResourceDictionary>
</Application.Resources>

它现在应该可以正常工作,我应该可以将MainPageViewModel定义为MainPage DataContext,但是Intellisense强调了
<viewModels:ViewModelLocator x:Key="Locator"></viewModels:ViewModelLocator>

有错误

Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))



我注意到,当我不使用ViewModelBase.IsInDesignModeStatic属性时,它可以正常工作,并且可以在MainPage上看到设计数据。
像这样的作品:
public class ViewModelLocator
{
public MainPageViewModel Main =>ServiceLocator.Current.GetInstance<MainPageViewModel>();


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

SimpleIoc.Default.Register<MainPageViewModel>();

SimpleIoc.Default.Register<IMainPageDataService, DesignMainPageDataService>();
}
}

您是否有解决这个奇怪问题的想法?

最佳答案

好吧...我的环境有问题。我在另一台机器上检查了它,它可以正常工作。

关于xaml - UWP + MvvmLight-定义为App.xaml资源的ViewModelLocator在设计模式下返回“拒绝访问”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35535181/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com