Пример #1
0
        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);
            }
        }
Пример #2
0
        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;
                }
            }
        }