protected override void ApplyAdditionalLayoutInfo(Dictionary <string, object> layoutInfo) { DataGridLength[] originalColumnWidths = this.DataGridFields.Columns.Select(column => column.Width).ToArray(); try { var dataGridLengthConverter = new DataGridLengthConverter(); for (int index = 0; index < this.DataGridFields.Columns.Count; index++) { var dataGridColumnKey = string.Format(DataGridColumnKeyFormat, index); if (!layoutInfo.ContainsKey(dataGridColumnKey)) { continue; } this.DataGridFields.Columns[index].Width = (DataGridLength)dataGridLengthConverter.ConvertFromString((string)layoutInfo[dataGridColumnKey]); } } catch { for (int index = 0; index < this.DataGridFields.Columns.Count; index++) { this.DataGridFields.Columns[index].Width = originalColumnWidths[index]; } } }
private DataGridLength ParseWidth(string defaultWidth) { if (string.IsNullOrEmpty(defaultWidth)) { return(new DataGridLength(100)); } var converter = new DataGridLengthConverter(); return((DataGridLength)converter.ConvertFromString(defaultWidth)); }
protected override ValidationResult IsValid(object value, ValidationContext validationContext) { var stringValue = (value as string); if (string.IsNullOrEmpty(stringValue)) { return(ValidationResult.Success); } try { ConverterInstance.ConvertFromString(stringValue); return(ValidationResult.Success); } catch { return(new ValidationResult("Examples of valid values: 'Auto', '150', '2*'", new[] { validationContext.MemberName })); } }