随分、久しぶりにC#のアプリを開発していて、ふと思い出したのですが、以前の記事で、
アプリケーションの設定をオブジェクトのシリアライズを使用して、XMLファイルに保存する方法を紹介しました。
現在、ちょっとしたアプリをWPFで開発していて、TextBoxなどに入力された内容を設定ファイルに保存しておきたいなと思って、
オブジェクトのシリアライズの方法でやろうかと思ったのですが、もっと簡単な方法が無いかと調べました。
もう、皆さんご存知だと思いますが、Properties.Settings.Defaultを使用する方法です。
ソリューションエクスプローラでプロジェクトのプロパティを選んで、「設定」を選択します。
そこで以下の画面から、アプリケーション内で、使用できるプロパティを登録することが出来ます。
スコープには、「アプリケーション」と「ユーザ」を指定できますが、
今回のようにユーザの入力内容を保存したりしたい場合は、ユーザを選択します。
値は、それぞれの項目のデフォルト値になります。一度ユーザが入力した内容を
保存した場合は、その値で上書きされます。
WPFではXAMLからBindingを利用してこれらのプロパティを利用することが出来ます。
ModeにTwoWay、またはOneWayToSourceを設定することで、ユーザが入力した内容を
プロパティに反映することが出来ます。
※デフォルトの動作では、コントロールがフォーカスを失った時に、反映されます。
最後に、ウィンドウが閉じる時にプロパティの内容をローカルファイルに保存する処理を記述します。
アプリケーションの設定をオブジェクトのシリアライズを使用して、XMLファイルに保存する方法を紹介しました。
現在、ちょっとしたアプリをWPFで開発していて、TextBoxなどに入力された内容を設定ファイルに保存しておきたいなと思って、
オブジェクトのシリアライズの方法でやろうかと思ったのですが、もっと簡単な方法が無いかと調べました。
もう、皆さんご存知だと思いますが、Properties.Settings.Defaultを使用する方法です。
ソリューションエクスプローラでプロジェクトのプロパティを選んで、「設定」を選択します。
そこで以下の画面から、アプリケーション内で、使用できるプロパティを登録することが出来ます。

スコープには、「アプリケーション」と「ユーザ」を指定できますが、
今回のようにユーザの入力内容を保存したりしたい場合は、ユーザを選択します。
値は、それぞれの項目のデフォルト値になります。一度ユーザが入力した内容を
保存した場合は、その値で上書きされます。
WPFではXAMLからBindingを利用してこれらのプロパティを利用することが出来ます。
<Window x:Class="Test.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:p="clr-namespace:Test.Properties" ・・これ、忘れずに。(Testのところはプロジェクトの名前空間) Title="MainWindow" Height="429" Width="619" Closing="Window_Closing"/> <TextBox Text="{Binding Source={x:Static p:Settings.Default}, Path=User, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
ModeにTwoWay、またはOneWayToSourceを設定することで、ユーザが入力した内容を
プロパティに反映することが出来ます。
※デフォルトの動作では、コントロールがフォーカスを失った時に、反映されます。
最後に、ウィンドウが閉じる時にプロパティの内容をローカルファイルに保存する処理を記述します。
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { Properties.Settings.Default.Save(); }
スポンサーサイト