ManipulationDeltaEventArgs.IsInertial ManipulationDeltaEventArgs.IsInertial ManipulationDeltaEventArgs.IsInertial ManipulationDeltaEventArgs.IsInertial Property

Определение

Получает значение, показывающее, происходит ли событие ManipulationDelta во время инерции.Gets a value that indicates whether the ManipulationDelta event occurs during inertia.

public:
 property bool IsInertial { bool get(); };
public bool IsInertial { get; }
member this.IsInertial : bool
Public ReadOnly Property IsInertial As Boolean

Значение свойства

Значение true, если событие ManipulationDelta происходит во время инерции; значение false, если событие происходит во время контакта пользователя с элементом UIElement.true if the ManipulationDelta event occurs during inertia; false if the event occurs while the user has contact with the UIElement.

Примеры

В следующем примере показан обработчик событий для ManipulationDelta события.The following example shows an event handler for the ManipulationDelta event. В примере проверяется, ManipulationDelta произошло ли событие во время инерции, а также находится ли прямоугольник в границах окна.The example checks whether the ManipulationDelta event occurred during inertia and whether the rectangle is touching the edge of a window. Если эти случаи истинны, приложение останавливает манипуляцию, чтобы прямоугольник не отображал видимую область приложения.If those cases are true, the application stops the manipulation to prevent the rectangle from leaving the visible area of the application. Этот пример является частью более крупного примера в пошаговом руководстве: Создание первого приложенияTouch.This example is part of a larger example in Walkthrough: Creating Your First Touch Application.

void Window_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
    
    // Get the Rectangle and its RenderTransform matrix.
    Rectangle rectToMove = e.OriginalSource as Rectangle;
    Matrix rectsMatrix = ((MatrixTransform)rectToMove.RenderTransform).Matrix;

    // Rotate the Rectangle.
    rectsMatrix.RotateAt(e.DeltaManipulation.Rotation, 
                         e.ManipulationOrigin.X, 
                         e.ManipulationOrigin.Y);

    // Resize the Rectangle.  Keep it square 
    // so use only the X value of Scale.
    rectsMatrix.ScaleAt(e.DeltaManipulation.Scale.X, 
                        e.DeltaManipulation.Scale.X, 
                        e.ManipulationOrigin.X,
                        e.ManipulationOrigin.Y);

    // Move the Rectangle.
    rectsMatrix.Translate(e.DeltaManipulation.Translation.X,
                          e.DeltaManipulation.Translation.Y);

    // Apply the changes to the Rectangle.
    rectToMove.RenderTransform = new MatrixTransform(rectsMatrix);

    Rect containingRect =
        new Rect(((FrameworkElement)e.ManipulationContainer).RenderSize);

    Rect shapeBounds =
        rectToMove.RenderTransform.TransformBounds(
            new Rect(rectToMove.RenderSize));

    // Check if the rectangle is completely in the window.
    // If it is not and intertia is occuring, stop the manipulation.
    if (e.IsInertial && !containingRect.Contains(shapeBounds))
    {
        e.Complete();
    }

    
    e.Handled = true;
}
Private Sub Window_ManipulationDelta(ByVal sender As Object, ByVal e As ManipulationDeltaEventArgs)

    ' Get the Rectangle and its RenderTransform matrix.
    Dim rectToMove As Rectangle = e.OriginalSource
    Dim rectTransform As MatrixTransform = rectToMove.RenderTransform
    Dim rectsMatrix As Matrix = rectTransform.Matrix


    ' Rotate the shape
    rectsMatrix.RotateAt(e.DeltaManipulation.Rotation,
                         e.ManipulationOrigin.X,
                         e.ManipulationOrigin.Y)

    ' Resize the Rectangle. Keep it square 
    ' so use only the X value of Scale.
    rectsMatrix.ScaleAt(e.DeltaManipulation.Scale.X,
                        e.DeltaManipulation.Scale.X,
                        e.ManipulationOrigin.X,
                        e.ManipulationOrigin.Y)

    'move the center
    rectsMatrix.Translate(e.DeltaManipulation.Translation.X,
                          e.DeltaManipulation.Translation.Y)

    ' Apply the changes to the Rectangle.
    rectTransform = New MatrixTransform(rectsMatrix)
    rectToMove.RenderTransform = rectTransform

    Dim container As FrameworkElement = e.ManipulationContainer
    Dim containingRect As New Rect(container.RenderSize)

    Dim shapeBounds As Rect = rectTransform.TransformBounds(
                                New Rect(rectToMove.RenderSize))

    ' Check if the rectangle is completely in the window.
    ' If it is not and intertia is occuring, stop the manipulation.
    If e.IsInertial AndAlso Not containingRect.Contains(shapeBounds) Then
        e.Complete()
    End If

    e.Handled = True
End Sub

Комментарии

Этот метод можно использовать для определения того, ManipulationDelta возникает ли событие во время инерции или когда пользователь имеет контакт с элементом, ManipulationDelta получающим событие.You can use this method to determine whether the ManipulationDelta event occurs during inertia or while the user has contact with the element that receives the ManipulationDelta event.

Применяется к