private RowDefinitions CalculateAndBuildRowDefinitions(HexControlViewModel viewModel) { RowDefinitions rowDefinition = new RowDefinitions(); // 1. the first row is the description row rowDefinition.Add(new RowDefinition(GridLength.Auto)); // 2. the second row is a placeholder rowDefinition.Add(new RowDefinition(GRID_PLACEHOLDER_MARGIN, GridUnitType.Pixel)); // 3. all the other rows are actually data-related rows for (int index = 0; index < (int)Math.Ceiling(viewModel.Data.Length / 16d); index++) { rowDefinition.Add(new RowDefinition(GridLength.Auto)); } return(rowDefinition); }
private ColumnDefinitions CalculateBuildColumnDefinitions(HexControlViewModel viewModel) { ColumnDefinitions columnDefinitions = new ColumnDefinitions(); // 1. the first column is the description column columnDefinitions.Add(new ColumnDefinition(GridLength.Auto)); // 2. the second column is a placeholder columnDefinitions.Add(new ColumnDefinition(GRID_PLACEHOLDER_MARGIN, GridUnitType.Pixel)); // 3. add 16 columns for the data for (int index = 0; index < Math.Min(16, viewModel.HexValueViewModels.Count); index++) { columnDefinitions.Add(new ColumnDefinition(GridLength.Auto)); } return(columnDefinitions); }
private IEnumerable <IControl> BuildHexValueEntries(HexControlViewModel viewModel, int rowCount, int columnCount) { columnCount -= 2; rowCount -= 2; for (int row = 0; row < rowCount; row++) { for (int column = 0; column < columnCount; column++) { int idx = (row * columnCount) + column; if (viewModel.HexValueViewModels.Count - 1 < idx) { break; } var hexValueControl = new HexValueControl(); hexValueControl.DataContext = viewModel.HexValueViewModels[idx]; Grid.SetRow(hexValueControl, row + 2); Grid.SetColumn(hexValueControl, column + 2); yield return(hexValueControl); } } }