/// <summary> /// Gets the cell template. /// </summary> /// <param name="column">The column.</param> /// <param name="converterInfo">The converter information.</param> /// <param name="gridType">Type of the grid.</param> /// <returns>DataTemplate.</returns> public static DataTemplate GetCellTemplate(IColumnItem column, ConverterInfo converterInfo, GridType gridType) { if (column == null) return null; var highlightBehavior = GetHightlightBehavior(column.ColumnName, gridType); var prop = column.Property; var stringFormat = GetStringFormat(prop); var backcolorBinding = GetBackgroundColor(prop); var converter = converterInfo != null ? converterInfo.ConverterString : string.Empty; var binding = string.Format(CultureInfo.InvariantCulture, GetPropertyBinding(gridType), column.FullName, string.IsNullOrWhiteSpace(column.Prefix) ? string.Empty : string.Format(CultureInfo.InvariantCulture, "{0}.", column.Prefix), string.IsNullOrWhiteSpace(converter) ? string.Empty : string.Format(CultureInfo.InvariantCulture, ", {0}", converter), string.IsNullOrWhiteSpace(stringFormat) ? string.Empty : string.Format(CultureInfo.InvariantCulture, ", {0}", stringFormat)); var behavior = string.Format(CultureInfo.InvariantCulture, highlightBehavior, binding); var templateText = BuildDataTemplate(gridType, behavior, backcolorBinding); var itemTemplate = XamlReader.Load(templateText); return (DataTemplate)itemTemplate; }
public GridViewDataColumn CreateDataColumn(IColumnItem column, ConverterInfo converterInfo) { if (column == null) throw new ArgumentNullException("column"); if (converterInfo == null) throw new ArgumentNullException("converterInfo"); if (column.IsSelectColumn) return null; if (column.IsBase && column.ColumnName == Constants.IdColumnName && column.Property.PropertyType == typeof(int)) { return null; } if (column.IsBase && column.ColumnName == Constants.VersionDate) { return null; } if (column.IsBase && column.ColumnName == Constants.VersionNumber) { return null; } if (column.IsBase && Constants.DerivedProcessDisplayNameColumnName.Equals(column.ColumnName)) { return null; } GridType gridType; if (!Enum.TryParse((string)_grid.Tag, out gridType)) { gridType = GridType.None; } var bindingPath = column.FullName; return new GridViewDataColumn { Header = column.Header, UniqueName = column.FullName, DataMemberBinding = new Binding(bindingPath) { Converter = converterInfo.ConverterObject, ConverterParameter = converterInfo.ConverterParameter }, CellTemplate = CellTemplateCreator.GetCellTemplate(column, converterInfo, gridType), GroupFooterCellStyle = (Style)_dictionary["GroupFooterCellStyle"], GroupHeaderFormatString = GetGroupFormatString(column, converterInfo), FooterCellStyle = (Style)_dictionary["FooterCellStyle"], DataType = column.Property.PropertyType, IsGroupable = true, Width = Math.Abs(column.Width) < double.Epsilon ? new GridViewLength(1, GridViewLengthUnitType.Auto) : column.Width, HeaderCellStyle = _dictionary != null ? (Style)_dictionary["GridViewHeaderCellStyle"] : new Style() }; }
/// <summary>Gets the group format string.</summary> /// <param name="column">column</param> /// <param name="converterInfo">The converter information.</param> private static string GetGroupFormatString(IColumnItem column, ConverterInfo converterInfo) { if (converterInfo.ConverterObject is NumberToPercentConverter) { var numericAttribute = (NumericAttribute)(from d in column.Property.GetCustomAttributes(typeof(NumericAttribute), false) select d).FirstOrDefault(); if (numericAttribute != null) return string.Format(CultureInfo.InvariantCulture, "{{0:P{0}}}", numericAttribute.NumberOfDigits); } else if (column.Property != null && column.Property.PropertyType == typeof(DateTime?)) { switch (ReferenceFieldsHelper.GetDateTimeFormatEnum(column.Property)) { case DateTimeFormat.Date: return "{0:d}"; case DateTimeFormat.Time: return "{0:t}"; default: return "{0:g}"; } } return string.Empty; }