8

帆布と赤い長方形を置いています。 イベントハンドラRectangleが実装されています:MouseDown

private void RedRectangle_MouseDown(object sender, MouseButtonEventArgs e)
{
    CreateMyBorder();
}

このCreateMyBorderメソッドは、キャンバス上の長方形Borderと同じサイズと位置でUIElementを作成することになっています。つまり、赤い長方形をカバーすることになっています。

赤い長方形のプロパティWidthとプロパティをコピーして要素に設定するのは簡単です。HeightBorder

myBorder.Height = RedRectangle.Height;
myBorder.Width = RedRectangle.Width;

しかし、2時間の試行錯誤の末、キャンバス上の赤い長方形の位置をコピーすることは不可能に思えます。期待される:

double x = RedRectangle.GetValue(Canvas.Left);
double y = RedRectangle.GetValue(Canvas.Top);
myBorder.SetValue(Canvas.Left, x);
myBorder.SetValue(Canvas.Top, y);

xy変数の値がであるため、機能しませんNaN。なんで?

UIElement助けてください、私はパネル上のの位置を取得して設定するのと同じくらい些細なことがとても苛立たしいことがあるとは信じられません。ありがとう。

4

1 に答える 1

12

静的関数は次の場所で使用できますCanvas

Canvas.SetLeft(element, x);
Canvas.SetTop(element, y);

とのデフォルト値である、以上のCanvas要素を表示しないように注意してください。LeftTopdouble.NaNLeftTop

于 2010-12-23T23:31:30.580 に答える