public static void Save(string filePath, IEnumerable <DataGridColumn> columns) { if (string.IsNullOrEmpty(filePath)) { throw new IOException("指定されたファイルパスに異常があります。"); } if (columns == null) { throw new ArgumentNullException("設定するカラムが null です。"); } var columnParams = columns.Select ( p => new DataGridParameter { Tag = TagBehavior.GetTag(p)?.ToString() ?? "null", DisplayIndex = p.DisplayIndex, Width = p.ActualWidth } ); var text = JsonSerializer.Serialize(columnParams); using (var writer = new StreamWriter(filePath, false, Encoding.UTF8)) { writer.Write(text); } }
public static void Load(string filePath, IEnumerable <DataGridColumn> columns) { var text = ""; if (!File.Exists(filePath)) { throw new IOException("指定されたファイルパスにファイルが存在しません。"); } using (var reader = new StreamReader(filePath, Encoding.UTF8)) { text = reader.ReadToEnd(); } if (string.IsNullOrEmpty(text)) { throw new IOException("指定されたファイルのデータが空白です。"); } var jsonParams = JsonSerializer.Deserialize <IEnumerable <DataGridParameter> >(text); if ((jsonParams?.Count() ?? 0) <= 0) { return; } // 左端(小さい番号)から順番に設定していく foreach (DataGridParameter param in jsonParams.OrderBy(p => p.DisplayIndex)) { if (string.IsNullOrEmpty(param.Tag) || (param.Tag == "null")) { continue; } var column = columns.SingleOrDefault(p => TagBehavior.GetTag(p).ToString() == param.Tag); if (column != null) { column.DisplayIndex = param.DisplayIndex; column.Width = param.Width; } } }