我正在尝试使用 VS2013 RC 在 Caliburn.Micro WinRT 8.1 应用程序中打开设置视图,但在打开它时我不断收到未处理的异常,并显示以下消息:
值不能为空。参数名称:无法解析应用清单中的 VisualElements。
我可以通过以下步骤重现问题:
- 使用空白应用模板从 VS2013 RC 创建一个新的 Windows 应用商店应用。
- 通过 NuGet 添加 Caliburn.Micro。
- 在 App.xaml 中,将基类更改为 caliburn:CaliburnApplication(命名空间声明为 xmlns:caliburn="using:Caliburn.Micro")。
- 在 App.xaml.cs 中,像这样更改类(对于基于 CM 的设置,我遵循http://compiledexperience.com/blog/posts/settings-caliburn)
下面的代码:
public sealed partial class App
{
private WinRTContainer _container;
public App()
{
InitializeComponent();
}
protected override void Configure()
{
_container = new WinRTContainer();
_container.RegisterWinRTServices();
_container.PerRequest<MainViewModel>();
_container.PerRequest<SettingsViewModel>();
ISettingsService settings = _container.RegisterSettingsService();
settings.RegisterCommand<SettingsViewModel>("Test settings");
}
protected override object GetInstance(Type service, string key)
{
var instance = _container.GetInstance(service, key);
if (instance != null) return instance;
throw new Exception("Could not locate any instances.");
}
protected override IEnumerable<object> GetAllInstances(Type service)
{
return _container.GetAllInstances(service);
}
protected override void BuildUp(object instance)
{
_container.BuildUp(instance);
}
protected override void PrepareViewFirst(Frame rootFrame)
{
_container.RegisterNavigationService(rootFrame);
}
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
DisplayRootView<MainView>();
}
}
- 最后,在解决方案中为 Views 和 ViewModels 创建文件夹,向其中添加所需的项目:MainViewModel、SettingsViewModel、MainView、SettingsView。这些视图只包含一个带有一些文本的 TextBlock。MainViewModel 派生自 Screen,而 SettingsViewModel 派生自 PropertyChangedBase。其中任何一个都没有相关代码。
启动应用程序时,我可以看到主视图;然后我打开超级按钮栏并点击设置,我找到了指向我的应用设置的标签;当我单击它时,我得到上面引用的异常。有什么提示吗?
您可以在此处找到完整的复制解决方案:http: //sdrv.ms/18GIMvB。