質問編集履歴
3
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -70,13 +70,42 @@
|
|
70
70
|
//オブジェクトの生成
|
71
71
|
Setting setting_class = new Setting { };
|
72
72
|
}
|
73
|
+
|
74
|
+
|
75
|
+
````
|
76
|
+
|
77
|
+
**PageA_Model.cs**
|
78
|
+
|
79
|
+
```
|
73
|
-
//
|
80
|
+
//クラスの定義
|
74
|
-
|
81
|
+
class Setting : INotifyPropertyChanged
|
75
82
|
{
|
83
|
+
|
84
|
+
private string username_value;
|
76
|
-
|
85
|
+
public string username
|
86
|
+
{
|
87
|
+
get { return username_value; }
|
88
|
+
|
89
|
+
set
|
90
|
+
{
|
91
|
+
username_value = value;
|
92
|
+
NotifyPropertyChanged("username");
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
public event PropertyChangedEventHandler PropertyChanged;
|
97
|
+
private void NotifyPropertyChanged(String info)
|
98
|
+
{
|
99
|
+
if (PropertyChanged != null)
|
100
|
+
{
|
101
|
+
PropertyChanged(this, new PropertyChangedEventArgs(info));
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
|
77
106
|
}
|
107
|
+
```
|
78
108
|
|
79
|
-
````
|
80
109
|
|
81
110
|
**PageA.xaml**
|
82
111
|
|
2
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,12 +3,20 @@
|
|
3
3
|
[WPFサンプル:NavigationServiceを使ったページ遷移](http://gushwell.ldblog.jp/archives/52335648.html)
|
4
4
|
|
5
5
|
ですがページA→ページB→ページAと移動するとページAのテキストボックスに入力されていた値が保持されません。
|
6
|
-
ページAのkeepaliveをTrueにすればいいのかと思ったのが解決できませんでした。
|
7
|
-
プロパティに値を保存してそれをロード時に読み込むようにすればいいのですが、それ以外の方法で詳しい方いましたら値保持する方法をご教示ください。
|
8
6
|
|
9
|
-
|
7
|
+
オブジェクトのプロパティをTextBoxに割り当てています。
|
10
8
|
|
9
|
+
①PageAを読み込むとSettingクラスのオブジェクトsetting_classが生成。
|
10
|
+
②PageAのTextBoxに値が入力される
|
11
|
+
③BindingしてあるSettingクラスのusernameプロパティが入力された値になる
|
12
|
+
④違いページに移動
|
13
|
+
⑤再びPageAに戻る
|
14
|
+
⑥PageAのコンストラクタでSettingクラスのオブジェクトsetting_classがテキストボックスに割り当てられる
|
15
|
+
|
16
|
+
これでページ遷移して値が保存されることを実現できるかと思ったのですがうまくいかないです。
|
17
|
+
原因分かる方いましたらご協力をお願いします。
|
18
|
+
|
11
|
-
MainWindows.xaml
|
19
|
+
**MainWindows.xaml**
|
12
20
|
```
|
13
21
|
|
14
22
|
public MainWindow()
|
@@ -45,4 +53,34 @@
|
|
45
53
|
}
|
46
54
|
|
47
55
|
|
56
|
+
```
|
57
|
+
|
58
|
+
**PageA**
|
59
|
+
```
|
60
|
+
public partial class PageA : Page
|
61
|
+
{
|
62
|
+
|
63
|
+
public PageA()
|
64
|
+
{
|
65
|
+
InitializeComponent();
|
66
|
+
//TextBoxにオブジェクトのプロパティを割り当てる
|
67
|
+
TextBox.DataContext = setting_class;
|
68
|
+
|
69
|
+
}
|
70
|
+
//オブジェクトの生成
|
71
|
+
Setting setting_class = new Setting { };
|
72
|
+
}
|
73
|
+
//オブジェクトの定義
|
74
|
+
public class Setting
|
75
|
+
{
|
76
|
+
public string username { get; set; }
|
77
|
+
}
|
78
|
+
|
79
|
+
````
|
80
|
+
|
81
|
+
**PageA.xaml**
|
82
|
+
|
83
|
+
```
|
84
|
+
<TextBox x:Name="TextBox" Text="{Binding username}"> </TextBox>
|
85
|
+
|
48
86
|
```
|
1
追記修正依頼にのっとって修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
ページAのkeepaliveをTrueにすればいいのかと思ったのが解決できませんでした。
|
7
7
|
プロパティに値を保存してそれをロード時に読み込むようにすればいいのですが、それ以外の方法で詳しい方いましたら値保持する方法をご教示ください。
|
8
8
|
|
9
|
+
※値を保存するためには保存ボタンすなどを作成して保存する必要がありますがページ遷移する度に値を保存して読み込むのではなくもう少しクールな方法がないかと思い「それ以外の方法」という表現をしました。
|
9
10
|
|
10
11
|
MainWindows.xamlの全体像はこんな感じです。
|
11
12
|
```
|