[SL3] Silverlight で設定をローカルに保存する
書初めw で作ったご挨拶、 じつは 1月 4日の夜にバージョンアップしてまして。 停止ボタンの状態を、 ローカルに覚えているようになってます。 停止状態にしておけば、 リロードしても停止したままになりました。 (…なってるはず f(^^; )
ブラウザ上で動いている Silverlight のアプリにはセキュリティの制限が掛かっているので、 普通に app.conifg に保存することは出来ません。 そこで、 Silverlight 3 から使えるようになった IsolatedStorageSettings クラスを使います。 ソースコードでは、 設定の保存・取出しを扱う RunStateConfig クラスにまとめてあります。
※ ソース一式 (VS2010用) ⇒ HappyNewYear2010Project20100104.zip (324KB)
※ IDE の背景は Mephist's Hospital (現在 IE のみ閲覧可) より。 (作者了解済み)
まず、 初期化時に IsolatedStorageSettings のインスタンスを取得しておきます。 IsolatedStorage が利用できない環境 (ユーザーが禁止している等) では、 取得時にIsolatedStorageException 例外が出ます。
private IsolatedStorageSettings userSettings;
try
f(^^;
{
this.userSettings = IsolatedStorageSettings.ApplicationSettings;
}
catch (IsolatedStorageException)
{
this.userSettings = null;
//TODO: 「利用不可」フラグにすべき }
読み書きするときには、 IsolatedStorage が利用可能かどうかを判断してから実行する必要があります。
まずは、 書き込み。
private const string RunStateKey = "RunState";
private void SetConfig(string state)
{
if (!this.IsUserSettingsEnable)
return;
this.userSettings[RunStateKey] = state;
}
続いては、 読み込み。
該当するキーの存在チェックも必要です。 また、 取り出した値は Object 型なので、 適切にキャストしなければなりません。
private const string StatePause = "PUASE";
internal bool IsPause
{
get
{
if (!this.IsUserSettingsEnable)
return false;
if (!this.userSettings.Contains(RunStateKey))
return false;
return ((string)(this.userSettings[RunStateKey]) == StatePause);
}
}
ローカルの設定を利用できないことがあるし、 そのときでもちゃんと動作しなきゃいけない、 という点には注意が必要ですが、 それ以外はとても簡単に設定を保存することが出来ると分かるかと思います。 これを、 IsolatedStorageFile クラスを使ってコネコネしようとすると、 けっこうタイヘンです。
| 固定リンク
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
「-プログラミング ( Silverlight )」カテゴリの記事
- [SL4] 投票よろしく! 「Silverlight4 のテストを強力にサポートしてほしい」(2010.09.19)
- [MEMO] Silverlight + NUnit(2010.08.02)
- [Silverlight] これで TDD できるかも!?(2010.07.26)
- Silverlight でも Coded UI Test がサポートされる予定(2010.06.06)
- [Silverlight] @oniak3 がスゴい勢いで答えるスレ (違w(2010.05.26)
この記事へのコメントは終了しました。
コメント