私は銀色のアプリケーションがありますが、固定高さと幅を使う代わりにパーセンテージを使っていくつかのアイテムのサイズを変更する必要があります。Silverlight、persentageを使って形状と高さと幅を計算する
このための私のコードsnippitがある:私はコードが何をしたいのか
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がUIのスライダによってサイズが変更されたためです。キャンバスの面積を計算した後、「セル」のサイズが変更されます。
これらの値をパーセンテージで計算することはできますか?
ご協力いただきありがとうございます。
申し訳ありませんが、私の命名規則は混乱しています。もともと私はグリッドを使っていたので、キャンバスにスウィッチされましたが、キャンバスx:の名前をグリッドにしました(グリッドを作成しますが、まだ混乱しています)。 – Shaun
とにかく、私は自分のコードが作成してキャンバスに追加するセルの計算を使ってこれを修正しました。 – Shaun