DevExpress产品始终为坚持用户的喜好提供了良好的支持。我的DevExpress体验从早期的Delphi版本到现在的.Net版本,我已经看到了将设置保存到Windows注册表,XML和其他版本的选项。
我现在正在使用Silverlight DXGrid(2011年第1卷),将用户的自定义网格设置存储在独立存储中似乎很自然,因此它在会话之间保留。实现这一目标的最佳方法是什么?有内置的方式吗?如果我必须自己做,至少有一个对象代表我可以序列化的设置,还是我必须编写自己的序列化方案?
我查看了GridControl和TableView类的文档,但没有找到实现此方法的内置方法(如WriteSettingsToIsolatedStorage()
方法)。
答案 0 :(得分:0)
在DevExpress的支持人员的帮助下,我发现this article描述了如何做我想做的事。
我使用下面的扩展方法将它带到了下一个级别,它使用网格名称来保存和恢复其布局。我可以拨打我想要的电话:
gridControl.SaveLayoutToIsolatedStorage();
gridControl.RestoreLayoutFromIsolatedStorage();
以下是代码:
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 );
}
}
}