VS2013 RC を使用して Caliburn.Micro WinRT 8.1 アプリで設定ビューを開こうとしていますが、開くとハンドルされない例外が発生し続け、次のメッセージが表示されます。
値を null にすることはできません。パラメーター名: アプリ マニフェストから 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。