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

質問編集履歴

3

コードの修正

2018/11/01 08:13

投稿

退会済みユーザー
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
- public class Setting
81
+ class Setting : INotifyPropertyChanged
75
82
  {
83
+
84
+ private string username_value;
76
- public string username { get; set; }
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

コードの修正

2018/11/01 08:13

投稿

退会済みユーザー
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

追記修正依頼にのっとって修正

2018/11/01 07:23

投稿

退会済みユーザー
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
  ```