TableView.xaml.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System.Windows;
  2. using System.Windows.Controls;
  3. using Vinno.vCloud.ReportTemplate.ViewModel.ViewModels;
  4. namespace vStation.Presentation.ReportTemplate
  5. {
  6. /// <summary>
  7. /// Interaction logic for TableView.xaml
  8. /// </summary>
  9. public partial class TableView
  10. {
  11. public TableView()
  12. {
  13. InitializeComponent();
  14. }
  15. private void TableView_OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
  16. {
  17. if (e.NewValue is GridViewModel gridViewModel)
  18. {
  19. Grid.Children.Clear();
  20. Grid.ColumnDefinitions.Clear();
  21. Grid.RowDefinitions.Clear();
  22. foreach (var rtRowDefinition in gridViewModel.RowDefinitions)
  23. {
  24. var rowDefinition = new RowDefinition
  25. {
  26. DataContext = rtRowDefinition,
  27. Height = GridLength.Auto,
  28. MinHeight = rtRowDefinition.Height * 4 / 3
  29. };
  30. Grid.RowDefinitions.Add(rowDefinition);
  31. }
  32. foreach (var rtColumnDefinition in gridViewModel.ColumnDefinitions)
  33. {
  34. var columnDefinition = new ColumnDefinition
  35. {
  36. DataContext = rtColumnDefinition
  37. };
  38. if (rtColumnDefinition.Width > 0)
  39. {
  40. columnDefinition.Width = new GridLength(rtColumnDefinition.Width*4/3);
  41. }
  42. Grid.ColumnDefinitions.Add(columnDefinition);
  43. }
  44. foreach (var cell in gridViewModel.Cells)
  45. {
  46. var cellPosition = cell.Key;
  47. var cellView = new CellView { DataContext = cell.Value };
  48. Grid.Children.Add(cellView);
  49. Grid.SetColumn(cellView, cellPosition.Column);
  50. Grid.SetRow(cellView, cellPosition.Row);
  51. Grid.SetColumnSpan(cellView, cellPosition.ColumnSpan);
  52. Grid.SetRowSpan(cellView, cellPosition.RowSpan);
  53. }
  54. }
  55. }
  56. }
  57. }