teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

具体的な解決策を追記いたしました。

2019/09/25 13:38

投稿

heroherohero
heroherohero

スコア38

answer CHANGED
@@ -1,2 +1,51 @@
1
+ 前提として、今回のアプリでは、「Windows Template Studio 」のPrismを利用して開発をしておりました。
2
+
3
+ そうしたところ、通常のアプリ起動時に、App.xaml.cs内の自動生成された下記メソッドたちが呼ばれていることが分かりました。(デバッグをしていて気づきました。)
4
+
5
+ 上から順に呼ばれています。
6
+
7
+ ```C#
8
+ protected override void ConfigureContainer()
9
+ rotected override IDeviceGestureService OnCreateDeviceGestureService()
10
+ protected override async Task OnInitializeAsync(IActivatedEventArgs args)
11
+ protected override async Task OnLaunchApplicationAsync(LaunchActivatedEventArgs args)
12
+ ```
13
+
14
+ しかし、右クリックをして、開くときに自分が書いていたコードは、一部省力しますが、下記のようになっておりました。(一般的に、ググって良く出てくるサイトに書いてある書き方です。)
15
+
16
+ ```C#
17
+ protected override async void OnFileActivated(FileActivatedEventArgs args)
18
+ {
19
+ base.OnFileActivated(args);
20
+ var rootFrame = new Frame();
21
+ rootFrame.Navigate(typeof(ReflectionRegisterDirectoryPage), strPhotoDetail);
22
+ Window.Current.Content = rootFrame;
23
+ Window.Current.Activate();
24
+ }
25
+ ```
26
+
27
+ そうした場合、上記の通常のアプリ起動時に呼ばれているはずのメソッドが呼ばれていなかったので、それらを呼ぶように、「OnFileActivated」メソッド内に追加したところ、動作するようになりました。
28
+
29
+ そして、この中の一番の肝は、「OnInitializeAsync」メソッドだと思います。
30
+
31
+ ```C#
32
+ protected override async Task OnInitializeAsync(IActivatedEventArgs args)
33
+ {
34
+ await base.OnInitializeAsync(args);
35
+
36
+ // We are remapping the default ViewNamePage and ViewNamePageViewModel naming to ViewNamePage and ViewNameViewModel to
37
+ // gain better code reuse with other frameworks and pages within Windows Template Studio
38
+ ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver((viewType) =>
39
+ {
40
+ var viewModelTypeName = string.Format(CultureInfo.InvariantCulture, "LearningAlbum.ViewModels.{0}ViewModel, LearningAlbum", viewType.Name.Substring(0, viewType.Name.Length - 4));
41
+ return Type.GetType(viewModelTypeName);
42
+ });
43
+ }
44
+ ```
45
+
46
+ 理由としては、ここで、ViewModelの紐づけを行っているように見えるからです。
47
+ →すみません、深く理解ができていないため、間違いなどありましたら、ご指摘お願いいたします。
48
+ よろしくお願いいたします!
49
+
50
+ 全然ググっても出てこなかったので、皆さんの一助になれば幸いです。
1
- 本件、解決いたしました
51
+ よろしくお願たしま
2
- ※解決方法に関しては、後程アップさせていただきます。