このサイトの説明の通り画面遷移するプログラムを作ることができました。
WPFサンプル:NavigationServiceを使ったページ遷移
ですがページA→ページB→ページAと移動するとページAのテキストボックスに入力されていた値が保持されません。
オブジェクトのプロパティをTextBoxに割り当てています。
①PageAを読み込むとSettingクラスのオブジェクトsetting_classが生成。
②PageAのTextBoxに値が入力される
③BindingしてあるSettingクラスのusernameプロパティが入力された値になる
④違いページに移動
⑤再びPageAに戻る
⑥PageAのコンストラクタでSettingクラスのオブジェクトsetting_classがテキストボックスに割り当てられる
これでページ遷移して値が保存されることを実現できるかと思ったのですがうまくいかないです。
原因分かる方いましたらご協力をお願いします。
MainWindows.xaml
public MainWindow() { InitializeComponent(); Navi = this.Frame.NavigationService; } //フィールドに定義 private NavigationService Navi; private List<Uri> UriList = new List<Uri>() {new Uri("PageA.xaml",UriKind.Relative), new Uri("PageB.xaml",UriKind.Relative),}; private void ListMenu_SelectionChanged(object sender, SelectionChangedEventArgs e) { int index = ListMenu.SelectedIndex; switch (index) { case 0: Navi.Navigate(UriList[0]); break; case 1: Navi.Navigate(UriList[1]); break; default: break; } }
PageA
public partial class PageA : Page { public PageA() { InitializeComponent(); //TextBoxにオブジェクトのプロパティを割り当てる TextBox.DataContext = setting_class; } //オブジェクトの生成 Setting setting_class = new Setting { }; }
PageA_Model.cs
//クラスの定義 class Setting : INotifyPropertyChanged { private string username_value; public string username { get { return username_value; } set { username_value = value; NotifyPropertyChanged("username"); } } public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(String info) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(info)); } } }
PageA.xaml
<TextBox x:Name="TextBox" Text="{Binding username}"> </TextBox>
回答1件
あなたの回答
tips
プレビュー