У меня есть приложение silverlight, которое работает, но теперь мне нужно изменить размер некоторых элементов, используя процент, а не фиксированные высоты и ширины.
Мой фрагмент кода для этого:
private void drawCell(int row, int col, string label, Color fill)
{
Rectangle rect = new Rectangle();
rect.Height = cellSize;
rect.Width = cellSize;
rect.StrokeThickness = 2;
rect.Stroke = new SolidColorBrush(Colors.DarkGray);
rect.Fill = new SolidColorBrush(fill);
Grid.Children.Add(rect);
Canvas.SetLeft(rect, col * cellSize);
Canvas.SetTop(rect, row * cellSize);
Rectangle innertec = new Rectangle();
innertec.Height = cellSize - 30;
innertec.Width = cellSize - 10;
innertec.StrokeThickness = 1;
innertec.Stroke = new SolidColorBrush(Colors.Black);
innertec.Fill = new SolidColorBrush(fill);
innertec.Margin = new Thickness(5);
Grid.Children.Add(innertec);
Canvas.SetLeft(innertec, col * cellSize);
Canvas.SetTop(innertec, row * cellSize);
Border productLabelBorder = new Border();
TextBlock productLabel = new TextBlock();
productLabel.Height = cellSize - 60;
productLabel.Width = cellSize - 10;
productLabel.Margin = new Thickness(5, innertec.Height + 5, 0, 5);
productLabel.TextAlignment = TextAlignment.Center;
productLabel.TextWrapping = TextWrapping.NoWrap;
productLabel.TextTrimming = TextTrimming.WordEllipsis;
productLabel.Text = label;
ToolTipService.SetToolTip(productLabel, label);
productLabelBorder.Child = productLabel;
Grid.Children.Add(productLabelBorder);
Canvas.SetLeft(productLabelBorder, col * cellSize);
Canvas.SetTop(productLabelBorder, row * cellSize);
}
То, что я хочу, чтобы код, это взять innertec и productLabel и вычислить высоту и ширину, сначала посмотрев на cellSizeявляется переменной, установленной в другом месте), а затем создайте эти объекты с процентом cellSize.
Причина в том, что cellSize изменил размер в зависимости от ползунка в пользовательском интерфейсе.«Ячейки» изменяют размеры после расчета площади холста.
Можно ли рассчитать эти значения в процентах?
Заранее спасибо за помощь.