在Silverlight中以编程方式设置TranslateX或Canvas.SetLeft属性

时间:2010-04-02 01:41:43

标签: wpf silverlight blend

所以这就是问题,我试图让那个圆圈对齐数字。当我在混合中这样做时,它向我显示我有一个Left(23),我尝试以编程方式执行Canvas.SetLeft(thePanel,23)它超越了。更好的是,如果有人知道像silverlight这样的控件让我知道。这样做的是当用户点击一个数字时,绿色圆圈被认为是转到该数字,所以看起来用户已经选择了它。 alt text

Blend

1 个答案:

答案 0 :(得分:2)

在Circle对象上,您必须设置圆的半径和TranslateTransform属性。假设您的Circle的半径为15:

private const double Radious = 15.0;

private double _x = Radious;
private double _y = Radious;

private TranslateTransform _translation = new TranslateTransform();

和处理Circle的X和Y坐标的属性

public double X
    {
        get { return this._x; }
        set
        {
            this._x = value;
            _translation.X = this._x - Radious;
        }
    }

    public double Y
    {
        get { return this._y; }
        set
        {
            this._y = value;
            _translation.Y = this._y - Radious;
        }
    }

在Silverlight中,您可以获得用户点击Canvas的位置,在面板的Click Event上设置此代码,并将圆圈的中心设置为用户点击的位置:

//Get the points where it was clicked
Point clickPoint = e.GetPosition(Canvas);

MyCircle.X = clickPoint.X;
MyCircle.Y = clickPoint.Y;

现在,如果您希望它们始终位于固定位置,您可以设置条件,如果用户点击数字,然后将圆的中心设置为数字的中心,或者只是更改X值您的圆圈移动到所需的位置。