Export (0) Print
Expand All
Expand Minimize

HitTestFilterCallback Delegate

Represents the callback method that specifies parts of the visual tree to omit from hit test processing

Namespace:  System.Windows.Media
Assembly:  PresentationCore (in PresentationCore.dll)

public delegate HitTestFilterBehavior HitTestFilterCallback(
	DependencyObject potentialHitTestTarget
)

Parameters

potentialHitTestTarget
Type: System.Windows.DependencyObject

The visual to hit test.

Return Value

Type: System.Windows.Media.HitTestFilterBehavior
A HitTestFilterBehavior that represents the action resulting from the hit test.

The hit test filter callback method is invoked for all the visual objects that map to the hit test criteria, starting from the visual you specify and descending through its branch of the visual tree. However, you may want to ignore certain branches of the visual tree that you are not interested in processing in your hit test results callback function. The return value of the hit test filter callback function determines what type of action the enumeration of the visual objects should take. For example, if you return the value, ContinueSkipSelfAndChildren, you can remove the current visual object and its descendants from the hit test results enumeration. This means that the hit test results callback method will not see these objects in its enumeration.

NoteNote

Pruning the visual tree of objects decreases the amount of processing during the hit test results enumeration pass.

Pruning a visual tree

Pruning a visual tree using a hit test filter

The following example shows how to invoke HitTest by using a HitTestFilterCallback value. The corresponding hit test callback method is also defined.

// 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();
    }
}

The following example shows how to return a HitTestFilterBehavior value from a hit test filter callback method.

// 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;
    }
}

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft