Silverlight捕捉到栅格

Silverlight捕捉到栅格,silverlight,silverlight-4.0,designer,silverlight-toolkit,Silverlight,Silverlight 4.0,Designer,Silverlight Toolkit,我正在创建一个可视化设计器,我需要像mocking Bird提供的那样的网格捕捉功能。是否有任何项目、用户控制或资源可以帮助我尽快在silverlight中开发相同的项目、用户控制或资源 我已经能够完成从工具箱列表框到设计器屏幕中央画布的拖放操作。但是,在设计器中,捕捉到网格和网格的功能非常出色。在MouseMove例程中,您需要进行额外的调整以允许捕捉 void MainImage_MouseMove(object sender, MouseMoveEventArgs args){

我正在创建一个可视化设计器,我需要像mocking Bird提供的那样的网格捕捉功能。是否有任何项目、用户控制或资源可以帮助我尽快在silverlight中开发相同的项目、用户控制或资源


我已经能够完成从工具箱列表框到设计器屏幕中央画布的拖放操作。但是,在设计器中,捕捉到网格和网格的功能非常出色。

在MouseMove例程中,您需要进行额外的调整以允许捕捉

void MainImage_MouseMove(object sender, MouseMoveEventArgs args){

    // ... assume you have calculated newX and newY already

    adjustSnap(ref newX, ref newY);

    // ... position your element

}

bool _isSnapOn = true;

void adjustSnap(ref double x, ref double y)
{
    const double gridWidth = 100;
    const double gridHeight = 100;

    if (_isSnapOn) 
    {

        if (x % gridWidth < gridWidth/2)
            x -= x % gridWidth;
        else
            x += (gridWidth - x % gridWidth);

        if (y % gridHeight < gridHeight / 2)
            y -= y % gridHeight;
        else
            y += (gridHeight - y % gridHeight);
    }
} 

逻辑似乎值得一试,但现在它会起作用,然后回来