HitTestFilterCallback Delegát
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje metodu zpětného volání, která určuje části vizuálního stromu, které se mají vynechat ze zpracování testu přístupů.
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á otestovat.
Návratová hodnota
A HitTestFilterBehavior , která představuje akci vyplývající z testu úspěšných přístupů.
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 přístupů.
// 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 HitTestFilterBehavior hodnotu z metody zpětného 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 hit test je vyvolána pro všechny vizuální objekty, které jsou namapované na kritéria testu, počínaje zadaným vizuálem a sestupně přes jeho větev vizuálního stromu. Můžete však ignorovat určité větve vizuálního stromu, které nemáte zájem o zpracování ve funkci zpětného volání výsledků testů přístupů. Vrácená hodnota funkce zpětného volání filtru výběrového testu určuje, jaký typ akce by měl výčet vizuálních objektů provést. Pokud například vrátíte hodnotu ContinueSkipSelfAndChildren, můžete odebrat aktuální objekt vizuálu a jeho potomky z výčtu výsledků testu přístupů. To znamená, že metoda zpětného volání výsledků testu hledání neuvidí tyto objekty ve svém výčtu.
Poznámka
Vyřazením vizuálního stromu objektů se sníží množství zpracování během průchodu výsledku výčtu výsledků testu.
Vyřezávání vizuálního stromu
Metody rozšíření
GetMethodInfo(Delegate) |
Získá objekt, který představuje metodu reprezentovanou zadaným delegátem. |