2011-07-20 15 views
0

DevExpress製品は、永続的なユーザーの設定を常に良好にサポートしてきました。私のDevExpressの経験はDelphiの初期のバージョンから現在の.Netバージョンまでをカバーしており、WindowsレジストリやXMLなどの設定を永続化するためのオプションを見てきました。Silverlight Isolated StorageとDevExpressグリッド

私は現在、Silverlight DXGrid(2011 vol。1)を使用しています。ユーザーのカスタマイズされたグリッド設定を隔離ストレージに保存するのは当然のように、セッション間に残ります。これを達成する最良の方法は何ですか?組み込みの方法はありますか?私が自分でそれをやらなければならないのであれば、少なくともシリアル化できる設定を表すオブジェクトがあるのでしょうか、それとも自分のシリアル化スキームを記述する必要がありますか?

GridControlTableViewクラスのドキュメントを見て、これを実現する組み込みの方法が見つからない(WriteSettingsToIsolatedStorage()メソッドのように)。

答えて

0

DevExpressのサポートスタッフの助けを借りて、私が望むことを行う方法を記述したthis articleが見つかりました。

グリッドの名前を使用してレイアウトを保存および復元する、以下の拡張メソッドで次のレベルにしました。

public static class GridSettingsExtension 
{ 
    private const string layoutFolderName = "dxGridLayout"; 
    private static readonly Func<GridControl, string> gridLayoutFile = g => g.Name + ".xml"; 

    public static bool IsLayoutSaved(this GridControl gridControl) { 
     var file = IsolatedStorageFile.GetUserStoreForApplication(); 
     var fullPath = Path.Combine(layoutFolderName, gridLayoutFile(gridControl)); 
     return file.FileExists(fullPath); 
    } 

    public static void SaveLayoutToIsolatedStorage(this GridControl gridControl) { 
     var file = IsolatedStorageFile.GetUserStoreForApplication(); 

     if(!file.DirectoryExists(layoutFolderName)) { 
      file.CreateDirectory(layoutFolderName); 
     } 

     string fullPath = Path.Combine(layoutFolderName, gridLayoutFile(gridControl)); 
     using(var fs = file.CreateFile(fullPath)) { 
      gridControl.SaveLayoutToStream(fs); 
     } 
    } 

    public static void RestoreLayoutFromIsolatedStorage(this GridControl gridControl) { 
     var file = IsolatedStorageFile.GetUserStoreForApplication(); 
     var fullPath = Path.Combine(layoutFolderName, gridLayoutFile(gridControl)); 
     using(var fs = file.OpenFile(fullPath, FileMode.Open, FileAccess.Read)) { 
      gridControl.RestoreLayoutFromStream(fs); 
     } 
    } 
} 
:ここ
gridControl.SaveLayoutToIsolatedStorage(); 
gridControl.RestoreLayoutFromIsolatedStorage(); 

コードです:私は、私が望んでいた電話をかけることができ
関連する問題