HitTestFilterCallback Delegát

Definice

Představuje metodu zpětného volání, která určuje části stromu vizuálu, které se mají vynechat od zpracování testu.

public delegate System::Windows::Media::HitTestFilterBehavior HitTestFilterCallback(DependencyObject ^ potentialHitTestTarget);
public delegate System.Windows.Media.HitTestFilterBehavior HitTestFilterCallback(DependencyObject potentialHitTestTarget);
type HitTestFilterCallback = delegate of DependencyObject -> HitTestFilterBehavior
Public Delegate Function HitTestFilterCallback(potentialHitTestTarget As DependencyObject) As HitTestFilterBehavior 

Parametry

potentialHitTestTarget
DependencyObject

Vizuál, který se má testovat.

Návratová hodnota

A HitTestFilterBehavior , který představuje akci vyplývající z testu hitu.

Příklady

Následující příklad ukazuje, jak vyvolat HitTest pomocí HitTestFilterCallback hodnoty. Je také definována odpovídající metoda zpětného volání testu.

// Respond to the mouse wheel event by setting up a hit test filter and results enumeration.
private void OnMouseWheel(object sender, MouseWheelEventArgs e)
{
    // Retrieve the coordinate of the mouse position.
    Point pt = e.GetPosition((UIElement)sender);

    // Clear the contents of the list used for hit test results.
    hitResultsList.Clear();

    // Set up a callback to receive the hit test result enumeration.
    VisualTreeHelper.HitTest(myCanvas,
                      new HitTestFilterCallback(MyHitTestFilter),
                      new HitTestResultCallback(MyHitTestResult),
                      new PointHitTestParameters(pt));

    // Perform actions on the hit test results list.
    if (hitResultsList.Count > 0)
    {
        ProcessHitTestResultsList();
    }
}
' Respond to the mouse wheel event by setting up a hit test filter and results enumeration.
Private Overloads Sub OnMouseWheel(ByVal sender As Object, ByVal e As MouseWheelEventArgs)
    ' Retrieve the coordinate of the mouse position.
    Dim pt As Point = e.GetPosition(CType(sender, UIElement))

    ' Clear the contents of the list used for hit test results.
    hitResultsList.Clear()

    ' Set up a callback to receive the hit test result enumeration.
    VisualTreeHelper.HitTest(myCanvas, New HitTestFilterCallback(AddressOf MyHitTestFilter), New HitTestResultCallback(AddressOf MyHitTestResult), New PointHitTestParameters(pt))

    ' Perform actions on the hit test results list.
    If hitResultsList.Count > 0 Then
        ProcessHitTestResultsList()
    End If
End Sub

Následující příklad ukazuje, jak vrátit hodnotu z metody zpětného HitTestFilterBehavior volání filtru hit test.

// Filter the hit test values for each object in the enumeration.
public HitTestFilterBehavior MyHitTestFilter(DependencyObject o)
{
    // Test for the object value you want to filter.
    if (o.GetType() == typeof(Label))
    {
        // Visual object and descendants are NOT part of hit test results enumeration.
        return HitTestFilterBehavior.ContinueSkipSelfAndChildren;
    }
    else
    {
        // Visual object is part of hit test results enumeration.
        return HitTestFilterBehavior.Continue;
    }
}
' Filter the hit test values for each object in the enumeration.
Public Function MyHitTestFilter(ByVal o As DependencyObject) As HitTestFilterBehavior
    ' Test for the object value you want to filter.
    If o.GetType() Is GetType(Label) Then
        ' Visual object and descendants are NOT part of hit test results enumeration.
        Return HitTestFilterBehavior.ContinueSkipSelfAndChildren
    Else
        ' Visual object is part of hit test results enumeration.
        Return HitTestFilterBehavior.Continue
    End If
End Function

Poznámky

Metoda zpětného volání filtru testu je vyvolána pro všechny vizuální objekty, které se mapují na kritéria testu, počínaje vizuálem, který zadáte, a sestupně přes jeho větev vizuálního stromu. Můžete ale chtít ignorovat určité větve vizuálního stromu, které vás nezajímají pro zpracování ve vaší funkci zpětného volání výsledků testu. Návratová hodnota funkce zpětného volání filtru testu zasáhnutí určuje, jaký typ akce má být provedený při vyčíslení objektů vizuálu. Pokud například vrátíte hodnotu, ContinueSkipSelfAndChildrenmůžete z výčtu výsledků testu odebrat aktuální objekt vizuálu a jeho potomky. To znamená, že metoda zpětného volání výsledků testu při dosažení výsledků hledání neuvidí tyto objekty v jeho výčtu.

Note

Vyřazení vizuálního stromu objektů snižuje množství zpracování během úspěšného testu – výčet výsledků testu.

Vyřazení vizuálního stromu pomocí filtru testu hitu Vyřezávání vizuálního stromu

Metody rozšíření

Name Description
GetMethodInfo(Delegate)

Získá objekt, který představuje metodu reprezentovanou zadaným delegátem.

Platí pro

Viz také