HitTestFilterCallback 代理人

定義

ヒット テスト処理で省略するビジュアル ツリーの一部を指定するコールバック メソッドを表します。Represents the callback method that specifies parts of the visual tree to omit from hit test processing.

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 

パラメーター

potentialHitTestTarget
DependencyObject

ヒット テストに対するビジュアル。The visual to hit test.

戻り値

HitTestFilterBehavior

ヒット テストの結果のアクションを表す HitTestFilterBehaviorA HitTestFilterBehavior that represents the action resulting from the hit test.

継承
HitTestFilterCallback

次の例は、HitTestFilterCallback の値を使用して HitTest を呼び出す方法を示しています。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();
    }
}
' 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

次の例は、ヒットテストフィルターのコールバックメソッドから @no__t 0 値を返す方法を示しています。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;
    }
}
' 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

注釈

ヒットテストフィルターのコールバックメソッドは、ヒットテストの条件にマップされるすべてのビジュアルオブジェクトに対して呼び出されます。指定したビジュアルから、ビジュアルツリーの分岐を通じて降順になります。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. たとえば、値を返す場合は、ヒットテストの結果の列挙から、現在のビジュアルオブジェクトとその子孫を削除できます (@no__t 0)。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.

注意

オブジェクトのビジュアル ツリーから余分なものを取り除くと、ヒット テストの結果の列挙体が渡されるときの処理を減らすことができます。Pruning the visual tree of objects decreases the amount of processing during the hit test results enumeration pass.

ヒット テスト フィルターを使用したビジュアル ツリーの簡略化Pruning a visual tree using a hit test filter
ビジュアル ツリーの簡略化Pruning a visual tree

拡張メソッド

GetMethodInfo(Delegate)

指定したデリゲートによって表されるメソッドを表すオブジェクトを取得します。Gets an object that represents the method represented by the specified delegate.

適用対象

こちらもご覧ください