DynamicGridCurrencyColumn.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Windows.Data;
  4. using System.Windows.Media;
  5. using InABox.Core;
  6. using InABox.Wpf;
  7. using Syncfusion.Data;
  8. using Syncfusion.UI.Xaml.Grid;
  9. using Syncfusion.UI.Xaml.TreeGrid;
  10. namespace InABox.DynamicGrid;
  11. public class DynamicGridCurrencyColumn<TEntity> : DynamicGridNumericColumn<TEntity, CurrencyEditor, GridCurrencyColumn, TreeGridCurrencyColumn> where TEntity : BaseObject
  12. {
  13. protected override void Configure(GridCurrencyColumn column, CurrencyEditor editor)
  14. {
  15. column.CurrencyDecimalDigits = GetDigits(editor);
  16. column.CurrencySymbol = string.IsNullOrEmpty(editor.CurrencySymbol) ? "$" : $"{editor.CurrencySymbol} ";
  17. column.CurrencyGroupSeparator = ",";
  18. column.CurrencyGroupSizes = new Int32Collection(new[] { 3, 3, 3, 3, 3, 3 });
  19. }
  20. protected override void Configure(TreeGridCurrencyColumn column, CurrencyEditor editor)
  21. {
  22. column.CurrencyDecimalDigits = GetDigits(editor);
  23. column.CurrencySymbol = string.IsNullOrEmpty(editor.CurrencySymbol) ? "$" : $"{editor.CurrencySymbol} ";
  24. column.CurrencyGroupSeparator = ",";
  25. column.CurrencyGroupSizes = new Int32Collection(new[] { 3, 3, 3, 3, 3, 3 });
  26. }
  27. protected override void UpdateBinding(TreeGridCurrencyColumn column)
  28. {
  29. base.UpdateBinding(column);
  30. (column.ValueBinding as Binding).Converter = new FuncConverter<object?, decimal?>(
  31. x =>
  32. {
  33. if(x is null)
  34. {
  35. return null;
  36. }
  37. else
  38. {
  39. return Convert.ToDecimal(x);
  40. }
  41. },
  42. x =>
  43. {
  44. return x.HasValue ? (double)x.Value : null;
  45. });
  46. }
  47. public override GridSummaryColumn? Summary()
  48. {
  49. if (Definition == null || Definition.Editor.Summary == Core.Summary.None)
  50. return null;
  51. var format = Definition.Editor.Summary == Core.Summary.Count
  52. ? "N0"
  53. : $"C{Editor!.Digits}";
  54. var summary = new GridSummaryColumn
  55. {
  56. Name = MappingName,
  57. Format = "{" + (Definition.Editor.Summary == Core.Summary.Sum ? "Sum" : "Count") + ":" + format + "}",
  58. MappingName = MappingName,
  59. SummaryType = Definition.Editor.Summary == Core.Summary.Sum
  60. ? SummaryType.DoubleAggregate
  61. : SummaryType.CountAggregate,
  62. CustomAggregate = new DynamicGridDoubleAggregate()
  63. };
  64. return summary;
  65. }
  66. public DynamicGridCurrencyColumn(DynamicGridColumn definition) : base(definition)
  67. {
  68. }
  69. }