回答編集履歴

1

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

2019/09/25 13:38

投稿

heroherohero
heroherohero

スコア38

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