DynamicGridCurrencyColumn.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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, new()
  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 IDynamicGridSummary? Summary()
  48. {
  49. if (Definition.Editor.Summary == Core.Summary.None)
  50. return null;
  51. return Definition.Editor.Summary == Core.Summary.Sum
  52. ? new DynamicGridSumSummary<double>($"C{Editor!.Digits}")
  53. : new DynamicGridCountSummary();
  54. }
  55. public DynamicGridCurrencyColumn(DynamicGridColumn definition) : base(definition)
  56. {
  57. }
  58. }