アプリの設定等を保存するためにPreferencesが用意されています。
簡単に使用できるのでメモします。
保存できる型
保存できる型は以下の7種です。
- Boolean(https://learn.microsoft.com/ja-jp/dotnet/api/system.boolean)
- Double(https://learn.microsoft.com/ja-jp/dotnet/api/system.double)
- Int32(https://learn.microsoft.com/ja-jp/dotnet/api/system.int32)
- Single(https://learn.microsoft.com/ja-jp/dotnet/api/system.single)
- Int64(https://learn.microsoft.com/ja-jp/dotnet/api/system.int64)
- String(https://learn.microsoft.com/ja-jp/dotnet/api/system.string)
- DateTime(https://learn.microsoft.com/ja-jp/dotnet/api/system.datetime)
設定の保存と取得
保存はキーと保存値、取得はキーとデフォルト値(キーが存在しない場合にデフォルト値が返却)を設定して使用します。
// 保存
Preferences.Default.Set("key", value);
// 取得
var val = Preferences.Default.Get("key", defaultValue);
存在確認
キーが存在するかどうかをチェックするにはContainsKeyを使用します。
存在する場合はtrue、存在しない場合はfalseが返却されます。
bool exist = Preferences.Default.ContainsKey("key");
設定削除
不要となった設定を削除する場合はRemoveを使用します。
Preferences.Default.Remove("key");
設定を全て削除したい場合にはClearで一括で削除も可能です。
Preferences.Default.Clear();
お試し実装
1つ目のテキストボックスが設定値入力箇所で、2つ目が読み込んだ値を表示する箇所です。
後は各ボタンで保存、取得、削除、クリアの処理を行っています。
- MainPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="PreferencesTest.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Entry x:Name="SaveText" Text="" />
<Entry x:Name="LoadText" Text="" />
<Button
x:Name="SaveBtn"
Text="Save"
Clicked="SaveClickedAsync"
HorizontalOptions="Center" />
<Button
x:Name="LoadBtn"
Text="Load"
Clicked="LoadClicked"
HorizontalOptions="Center" />
<Button
x:Name="RemoveBtn"
Text="Remove"
Clicked="RemoveClicked"
HorizontalOptions="Center" />
<Button
x:Name="ClearBtn"
Text="Clear"
Clicked="ClearClicked"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
- MainPage.xaml.cs
設定削除した時に空文字だとわかりにくかったので日時を入れてあります。
namespace PreferencesTest;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void SaveClickedAsync(object sender, EventArgs e)
{
Preferences.Default.Set("save_text", SaveText.Text);
Preferences.Default.Set("save_time", DateTime.Now);
}
private void LoadClicked(object sender, EventArgs e)
{
string loadtext = Preferences.Default.Get("save_text", "");
LoadText.Text = loadtext + $" {Preferences.Default.Get("save_time", DateTime.Parse("1999/01/01"))}";
}
private void RemoveClicked(object sender, EventArgs e)
{
Preferences.Default.Remove("save_text");
}
private void ClearClicked(object sender, EventArgs e)
{
Preferences.Default.Clear();
}
}
コメント