Compartilhar via


Como: Use a Thumb to Enable Dragging

Este exemplo mostra como utilizar um controle Thumb para redimensionar um controle Canvas.

Exemplo

O controle Thumb fornece funcionalidade de arrasto que pode ser utilizada para mover ou redimensionar controles monitorando os eventos DragStarted, DragDelta e DragCompleted do Thumb.

O usuário inicia uma operação de arrasto pressionando o botão esquerdo do mouse quando o cursor do mouse está pausado sobre o controle Thumb. A operação de arrasto continua enquanto o botão esquerdo do mouse permanece pressionado. Durante a operação de arrasto, o DragDelta pode ocorrer mais do que uma vez. Cada vez que isso ocorre, a classe DragDeltaEventArgs fornece a mudança de posição que corresponde a mudança na posição do mouse. Quando o usuário libera o botão esquerdo do mouse, a operação de arrasto é terminada. A operação somente fornece novas coordenadas; não reposiciona automaticamente o Thumb.

O exemplo a seguir mostra um controle Thumb que é o elemento filho de um controle Canvas. O manipulador de eventos para seu evento DragDelta fornece a lógica para mover o Thumb e redimensionar o Canvas. Os manipuladores de evento para os eventos DragStarted e DragCompleted mudam a cor do Thumb durante uma operação de arrasto. O exemplo a seguir define o Thumb.

<Thumb Name="myThumb" Canvas.Left="80" Canvas.Top="80" Background="Blue" 
      Width="20" Height="20" DragDelta="onDragDelta" 
      DragStarted="onDragStarted" DragCompleted="onDragCompleted"
      />

O exemplo a seguir mostra o manipulador de evento DragDelta que move o Thumb e redimensiona o Canvas em resposta a um movimento de mouse.

void onDragDelta(object sender, DragDeltaEventArgs e)
{
    //Move the Thumb to the mouse position during the drag operation
    double yadjust = myCanvasStretch.Height + e.VerticalChange;
    double xadjust = myCanvasStretch.Width + e.HorizontalChange;
    if ((xadjust >= 0) && (yadjust >= 0))
    {
        myCanvasStretch.Width = xadjust;
        myCanvasStretch.Height = yadjust;
        Canvas.SetLeft(myThumb, Canvas.GetLeft(myThumb) +
                                e.HorizontalChange);
        Canvas.SetTop(myThumb, Canvas.GetTop(myThumb) +
                                e.VerticalChange);
        changes.Text = "Size: " +
                        myCanvasStretch.Width.ToString() +
                         ", " +
                        myCanvasStretch.Height.ToString();
    }
}

O exemplo a seguir mostra o manipulador de evento DragStarted.

Private Sub onDragStarted(ByVal sender As Object, ByVal e As DragStartedEventArgs)
    myThumb.Background = Brushes.Orange
End Sub
void onDragStarted(object sender, DragStartedEventArgs e)
{
    myThumb.Background = Brushes.Orange;
}

O exemplo a seguir mostra o manipulador de evento DragCompleted.

Private Sub onDragCompleted(ByVal sender As Object, _
                  ByVal e As DragCompletedEventArgs)
    myThumb.Background = Brushes.Blue
End Sub
void onDragCompleted(object sender, DragCompletedEventArgs e)
{
    myThumb.Background = Brushes.Blue;
}

For the complete sample, see Miniatura exemplo de funcionalidade de arrastar.

Consulte também

Referência

Thumb

DragStarted

DragDelta

DragCompleted