public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { DataGridLengthConverter converter = new DataGridLengthConverter(); var res = converter.ConvertFrom(value); return(res); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { DataGridLengthConverter dglc = new DataGridLengthConverter(); double val = (double)value; return(dglc.ConvertFrom(val)); }
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)); }
private static void AddColumns(DataGrid dataGrid, IEnumerable columns) { foreach (var column in columns) { var desc = column as IColumnDescriptionVm; var template = desc?.Template; var cellTemplate = dataGrid.FindResource(new DataTemplateKey(template.GetType())) as DataTemplate; var dataGridLengthConverter = new DataGridLengthConverter(); var customBoundColumn = new CustomBoundColumn(desc) { Header = column, CellTemplate = cellTemplate, CellEditingTemplate = GetAttachedCellEditingTemplate(dataGrid), // MappedValueCollection = GetMappedValues(dataGrid), }; if (desc.Width != null) { customBoundColumn.Width = (DataGridLength)dataGridLengthConverter.ConvertFrom(null, CultureInfo.InvariantCulture, desc.Width); } else { customBoundColumn.Width = new DataGridLength(1, DataGridLengthUnitType.Star); } if (desc.CanSort) { customBoundColumn.HeaderTemplate = GetSortingHeaderTemplate(dataGrid); } else { customBoundColumn.HeaderTemplate = GetHeaderTemplate(dataGrid); } if (desc.HasOverlook) { customBoundColumn.CellStyle = dataGrid.FindResource("OverlookCellStyle") as Style; } if (desc.InsertBefore) { dataGrid.Columns.Insert(dataGrid.FrozenColumnCount, customBoundColumn); } else { dataGrid.Columns.Add(customBoundColumn); } } }
/// <summary> /// DataGrid绑定数据源描述 /// </summary> /// <param name="headerName">列名</param> /// <param name="showAs">显示为</param> /// <param name="width">宽度</param> /// <param name="displayIndex">显示顺序</param> /// <param name="resourceKey">自定义列Key</param> public BindDescriptionAttribute(string headerName, ShowScheme showAs = ShowScheme.普通文本, string width = "Auto", int displayIndex = 0, string resourceKey = "") { HeaderName = headerName; DisplayIndex = displayIndex; ResourceKey = resourceKey; ShowAs = showAs; var convert = new DataGridLengthConverter(); Width = (DataGridLength)convert.ConvertFrom(width); var gridCOnvert = new GridLengthConverter(); CloumnWidth = (GridLength)gridCOnvert.ConvertFrom(width); if (showAs == ShowScheme.自定义 && string.IsNullOrWhiteSpace(resourceKey)) { throw new ArgumentException($"自定义列时需要指定{nameof(resourceKey)}参数!"); } }
protected override Dictionary <string, object> FetchAdditionalLayoutInfo() { var additionalLayoutInfo = new Dictionary <string, object>(); var dataGridLengthConverter = new DataGridLengthConverter(); Regex widthSpecialCharacterMatch = new Regex(@"[^0-9.]"); for (int index = 0; index < this.DataGridFields.Columns.Count; index++) { DataGridColumn dataGridColumn = this.DataGridFields.Columns[index]; string dataGridColumnWidthStr = dataGridLengthConverter.ConvertToString(dataGridColumn.Width); if (widthSpecialCharacterMatch.IsMatch(dataGridColumnWidthStr)) { additionalLayoutInfo.Add(string.Format(DataGridColumnKeyFormat, index), dataGridLengthConverter.ConvertToString(dataGridColumn.Width)); } else { additionalLayoutInfo.Add(string.Format(DataGridColumnKeyFormat, index), Convert.ToString(dataGridColumn.ActualWidth)); } } return(additionalLayoutInfo); }