ダッシュボードを保存
ダッシュボードの保存は、アプリケーションの RevealView
コントロール内の保存ボタンを使用してエンドユーザーによって呼び出されます。
RevealView
でサポートされている保存操作には次の 2 種類があります:
- [保存] - 現在のダッシュボードを保存し、ディスク上の現在の .rdash ファイルを上書きします。
- [名前を付けて保存] - 現在のダッシュボードを新しい .rdash ファイルとしてディスクに保存します。元の .rdash ファイルはそのままにしておきます。
保存操作は、エンドユーザーが編集モードのときに呼び出され、RevealView
の右上隅にあるチェック ボタンをクリックします。
エンドユーザーが RevealView
の右上隅にあるケバブ メニューを開き、[名前を付けて保存] メニュー項目を選択すると、名前を付けて保存操作が呼び出されます。
ダッシュボードの保存イベント
デフォルトでは、RevealView
は組み込みの保存または名前を付けて保存機能を提供しません。つまり、開発者は、アプリケーション内で保存と名前を付けて保存の両方の操作を実行するために必要なすべてのコードを記述する必要があります。
ダッシュボードの保存を処理するには、RevealView.SaveDashboard
イベントにイベント ハンドラー を追加する必要があります。
<rv:RevealView x:Name="_revealView"
SaveDashboard="RevealView_SaveDashboard"/>
private void RevealView_SaveDashboard(object sender, Reveal.Sdk.DashboardSaveEventArgs e)
{
// your save code here
}
DashboardSaveEventArgs
オブジェクトは、ダッシュボードの保存に役立つ次のプロパティとメソッドを提供します:
- Name - これは現在のダッシュボードのタイトル (
RevealView
のダッシュボードの上部に表示されるテキスト) です。.rdash の名前がダッシュボードのタイトルと一致することが重要です。 - saveAs - これが保存操作か名前を付けて保存操作かを判別します。
- Serialize() - 保存に使用する現在のダッシュボードの
byte[]
を返します。これは主に保存操作に使用されます。 - Serialize() - 保存に使用できる JSON
文字列
を返します。これは主に保存操作に使用されます。 - SerializeWithNewName() - ダッシュボードのタイトルを変更し、保存に使用する現在のダッシュボードの
byte[]
を返します。これは主に Save As 操作に使用されます。 - SerializeWithNewNameAsJson() - ダッシュボードのタイトルを変更し、保存に使用できる JSON
文字列
を返します。これは主に Save As 操作に使用されます。 - SavedFinished() - REQUIRED は、保存操作が完了したことを示します。これは、保存の非同期性による要件です。
エンドユーザーが編集モードで、RevealView.SaveDashboard
イベントを実装していない場合、チェック ボタンをクリックしても編集モードは終了しません。これは、RevealView.SaveDashboard
イベントを実装する必要があることを示すインジケーターです。
保存を無効にする
編集を無効にするか、[名前を付けて保存] UI 要素を非表示にすることで、エンドユーザーが保存または名前を付けて保存操作を呼び出さないようにすることができます。
保存操作を無効にするには、編集を完全に無効にする必要があります。編集を無効にする方法の詳細については、編集のトピックを参照してください。
[名前を付けて保存] 操作を無効にするには、RevealView.CanSaveAs
プロパティを false
に設定する必要があります。
<rv:RevealView x:Name="_revealView" CanSaveAs="False" />
例: 保存の実装
ダッシュボードを保存するデフォルトのディレクトリを保持する変数を作成することから始めましょう。この場合、ダッシュボードをアプリケーション ディレクトリからの相対的な Dashboards フォルダーに保存します。
string _defaultDirectory = Path.Combine(Environment.CurrentDirectory, "Dashboards");
次に、[保存] 操作と [名前を付けて保存] のどちらの操作を行っているかを確認しましょう。
private async void RevealView_SaveDashboard(object sender, Reveal.Sdk.DashboardSaveEventArgs e)
{
if (e.IsSaveAs)
{
}
else
{
}
}