トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Tag: WPF 設定を保存する

目次

参考情報

Settings.settingsを使う方法

基本

  • <プロジェクトルート>\PropertiesにあるSettings.settingsを使う方法が一番簡単らしい。
  • Settings.settingsの内容はapp.configというxmlファイルに保存され、これが実行時に変更される実際の情報保存用ファイルのひな形となる。
  • 実行時の情報保存様ファイルは〜.exe.configというファイルで、exeと同じフォルダに存在する。

サンプル

概要

  • Messageという文字列型の設定値をTextBoxにバインドする。
  • 保存ボタンを押したら保存。次回に同じ値が読み込まれる。

設定値の作成

  • ソリューションエクスプローラーでProperties\Settings.settingsを開き以下の項目を追加する。
    名前スコープ
    Messagestringユーザー

MainWindow.xaml

  • DataContext(=MainWindowViewModel)のMessageプロパティをTextにバインド。
  • 保存ボタンをおしたときハンドラで保存する。
    <Window x:Class="SettingsDemo.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="200" Width="200">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
            </Grid.RowDefinitions>
            <TextBox Margin="10" Text="{Binding Message}"></TextBox>
            <Button Grid.Row="1" Click="button_Clicked">保存</Button>
        </Grid>
    </Window>
    

MainWindow.xaml.cs

  • MainWindowViewModelをDataContextに代入。。
  • 保存ボタンが押されたときのイベントハンドラbutton_Clickedで設定値を保存。
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                DataContext = new MainWindowViewModel();
            }
    
            private void button_Clicked(object sender, RoutedEventArgs e)
            {
                Properties.Settings.Default.Save();
            }
        }
    

MainWindowViewModel.cs

  • MessageプロパティはProperties.Settings.Default.MessageのDelegateメソッドとする。
        public class MainWindowViewModel :INotifyPropertyChanged
        {
            public string Message
            {
                get
                {
                    return Properties.Settings.Default.Message;
                }
                set
                {
                    Properties.Settings.Default.Message = value;
                    NotifyPropertyChanged("Message");
                }
            }
    
            #region INotifyPropertyChanged メンバー
    
            public event PropertyChangedEventHandler PropertyChanged;
    
            public void NotifyPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                }
            }
    
            #endregion
    
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-04-13 (水) 16:47:46 (796d)