シンプルなインジェクションとプリズムを使ってシンプルなHelloWorld
を試しています。 Git Sourceプリズムとシンプルインジェクタ
アプリケーションが起動すると、このエラーが
を思い付くプロパティ に割り当てることができませんでした 'Prism.Windows.Mvvm.ViewModelLocator.AutoWireViewModel'。 [ライン:8 ポジション:5]スロー」
例外: HelloWorldPrismの 'Windows.UI.Xaml.Markup.XamlParseException':スローPrism.Windows.dll 例外の 'System.MissingMethodException'。 exeファイルWinRTの情報は:プロパティ 「Prism.Windows.Mvvm.ViewModelLocator.AutoWireViewModel」[:8 ポジション:ライン5]に割り当てることができませんでしたタイプ 「Windows.UI.Xaml.Markup.XamlParseException」の例外 に発生しましたHelloWorldPrism.exeが、ユーザコードWinRT の情報で処理されませんでした:プロパティ 'Prism.Windowsへの割り当てに失敗しました.Mvvm.ViewModelLocator.AutoWireViewModel '。 [行:8 位置:5]追加情報:この エラーコードに関連付けられたテキストが見つかりませんでした。プロパティ 'Prism.Windows.Mvvm.ViewModelLocator.AutoWireViewModel'に割り当てられませんでした。 [ライン:8 位置:5]
e.StackTrace」Windows.UI.Xaml.Application.LoadComponent(オブジェクト 成分、ウリresourceLocator、ComponentResourceLocation componentResourceLocation)\ R \ nにおける HelloWorldPrism.Views.MainViewで.InitializeComponent()\ R \ n でHelloWorldPrism.Views.MainView..ctor()」文字列
<Page
x:Class="HelloWorldPrism.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mvvm="using:Prism.Windows.Mvvm"
mvvm:ViewModelLocator.AutoWireViewModel="True"
mc:Ignorable="d"
>
public MainViewModel(INavigationService navigationService)
{
_navigationService = navigationService;
}
パラメータのないコンストラクタを追加すると正常に動作します。
public MainViewModel()
{
}
App.cs
protected override Task OnLaunchApplicationAsync(LaunchActivatedEventArgs args)
{
Window.Current.Activate();
return Task.FromResult(true);
}
protected override void CreateAndConfigureContainer()
{
Logger.Log("Creating and Configuring Container", Category.Debug, Priority.Low);
Container = CreateContainer();
}
protected override Container CreateContainer()
{
return new Container();
}
protected override UIElement CreateShell(Frame rootFrame)
{
var shell = Container.GetInstance<MainView>();
shell.SetFrame(rootFrame);
return shell;
}
protected override Type GetPageType(string pageToken)
{
var type = Type.GetType(string.Format(CultureInfo.InvariantCulture, GetType().AssemblyQualifiedName.Replace(GetType().FullName, GetType().Namespace + ".Views.{0}View"), pageToken));
if (type != null)
return type;
throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, ResourceLoader.GetForCurrentView("/Prism.Windows/Resources/").GetString("DefaultPageTypeLookupErrorMessage"), pageToken, GetType().Namespace + ".Views"), nameof(pageToken));
}
protected override Task OnInitializeAsync(IActivatedEventArgs args)
{
Container.RegisterSingleton(SessionStateService);
Container.RegisterSingleton(DeviceGestureService);
Container.RegisterSingleton(NavigationService);
Container.RegisterSingleton(EventAggregator);
return Task.CompletedTask;
}
protected override void ConfigureViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => new
SimpleInjectorServiceLocatorAdapter(Container));
}
stacktraceを含めて完全に投稿してください。すべての内部例外。私はあなたがそこで答えを見つけられるでしょう。簡単なインジェクタは、INavigationServiceの登録が欠落していることを明確に述べることがあります。 –
@ Ric.Net Prism新しい出力エラー情報を追加しました。 – rubStackOverflow