tmytのらくがき

個人の日記レベルです

WinRTでアプリの設定を保存する

WinRTでアプリの設定保存するには ApplicationData.Current.RoamingSettings.Values あたりに保存したりすると、勝手に同期されて便利だったりします。ちなみにRoamingSttingsLocalSettingsに変えると同期されない設定が書けます。 これの何がいいって、XMLで自前で管理しなくていいところです。

で、ふだんはこのクラスをラップしてこんなのを使ってます。

これを、こんな感じで継承して使うと

public class AppConfig : AppConfigBase<AppConfig>
{
    public bool Checked1 { get { return GetValue(true); } set { SetValue(value); OnPropertyChanged(); } }
    [LocalValue]
    public string Text { get { return GetValue<string>(); } set { SetValue(value); OnPropertyChanged(); } }
}

コードからこんな風に使うことが出来ます。

AppConfig.Instance.Checked1 = false;
AppConfig.Instance.Text = "hoge";

で、これだとXAMLからシングルトンを叩けないので、こんなクラスを用意します。

public class XamlAppConfig
{
    public AppConfig Instance { get { return AppConfig.Instance; } }
}

あとはこれをXAMLに書いてBindingします。

<Grid>
    <Grid.Resources>
        <local:XamlAppConfig x:Key="AppConfig" />
    </Grid.Resources>
    <Chkeckbox IsChecked="{Binding Source={StaticResource AppConfig},Path=Checked1,Mode=TwoWay}" />
    <TextBox Text="{Binding Source={StaticResource AppConfig},Path=Text,Mode=TwoWay}" />
</Grid>

すると、値が変わると勝手に保存できて便利です。インテリセンスもきくし。

というのを普段使ってるんですが、みなさんどうしてますか?