Task, classe
Représente une collection de commandes et de liaisons d'entrée vers ces commandes.
Hiérarchie d'héritage
System.Object
Microsoft.Windows.Design.Interaction.Task
Espace de noms : Microsoft.Windows.Design.Interaction
Assembly : Microsoft.Windows.Design.Interaction (dans Microsoft.Windows.Design.Interaction.dll)
Syntaxe
'Déclaration
Public Class Task
public class Task
public ref class Task
type Task = class end
public class Task
Le type Task expose les membres suivants.
Constructeurs
Nom | Description | |
---|---|---|
Task | Initialise une nouvelle instance de la classe Task. |
Début
Propriétés
Nom | Description | |
---|---|---|
AdornerFilter | Obtient ou définit le filtre utilisé pour filtrer le jeu d'ornements visibles pour l'algorithme de test d'atteinte du concepteur. | |
CommandBindings | Obtient le CommandBindingCollection d'une tâche. | |
Cursor | Obtient ou définit le curseur pour une tâche. | |
Description | Obtient ou définit la description de cette tâche. | |
InputBindings | Obtient le InputBindingCollection d'une tâche. | |
IsFocused | Obtient une valeur indiquant si cette tâche a le focus. | |
ModelFilter | Obtient ou définit le filtre utilisé pour filtrer le jeu d'éléments de modèle visibles pour l'algorithme de test d'atteinte du concepteur. | |
ToolCommandBindings | Obtient le ToolCommandBindingCollection d'une tâche. |
Début
Méthodes
Nom | Description | |
---|---|---|
BeginFocus | Commence à définir le focus de la tâche. | |
Complete | Termine les modifications apportées pendant que cette tâche a le focus. | |
Equals | Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.) | |
Finalize | Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.) | |
GetHashCode | Sert de fonction de hachage pour un type particulier. (Hérité de Object.) | |
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) | |
MemberwiseClone | Crée une copie superficielle de l'objet Object actif. (Hérité de Object.) | |
OnCompleted | Déclenche l'événement Completed. | |
OnFocusDeactivated | Déclenche l'événement FocusDeactivated. | |
OnReverted | Déclenche l'événement Reverted. | |
Revert | Rétablit cette tâche. | |
ToString | Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.) |
Début
Événements
Nom | Description | |
---|---|---|
Completed | Se produit lorsque cette tâche est terminée. | |
FocusDeactivated | Se produit lorsque le focus de cette tâche est désactivé. | |
Reverted | Se produit lorsque cette tâche est rétablie. |
Début
Notes
Un Task représente une collection de liaisons d'entrée et de commandes qui peuvent être associés à un élément d'interface utilisateur dans le concepteur. Lorsqu'une tâche est active, l'entrée d'utilisateur est dirigée vers la tâche et les commandes associées aux liaisons d'entrée peuvent être exécutées. Lorsque la tâche est désactivée, l'entrée d'utilisateur reprend sont état normal.
Vous pouvez orner une tâche avec les attributs RequiresServiceAttribute et RequiresContextItemAttribute. Dans ce cas, la tâche n'est utilisée que lorsque les services et les éléments de contexte nécessaires sont disponibles.
Exemples
L'exemple de code suivant montre comment utiliser la classe Task. Pour plus d'informations, consultez Comment : créer une stratégie de substitution.
Imports System
Imports System.Collections.Generic
Imports System.Windows
Imports System.Windows.Input
Imports Microsoft.Windows.Design.Interaction
' A DockPanelMarginTask is attached to to the adorner
' offered by the DockPanelAdornerProvider class. When
' you drag the adorner, the target control's Margin
' property changes.
Class DockPanelMarginTask
Inherits Task
Private dragBinding, endDragBinding As InputBinding
Private initialMargin As Thickness
' The DockPanelMarginTask constructor establishes mappings
' between user inputs and commands.
Public Sub New()
Dim beginDrag As New ToolCommand("BeginDrag")
Dim drag As New ToolCommand("Drag")
Dim endDrag As New ToolCommand("EndDrag")
Dim resetMargins As New ToolCommand("ResetMargins")
Me.InputBindings.Add(New InputBinding( _
beginDrag, _
New ToolGesture(ToolAction.DragIntent, MouseButton.Left)))
Me.InputBindings.Add( _
New InputBinding( _
resetMargins, _
New ToolGesture(ToolAction.DoubleClick, MouseButton.Left)))
Me.dragBinding = New InputBinding( _
drag, _
New ToolGesture(ToolAction.Move))
Me.endDragBinding = New InputBinding( _
endDrag, _
New ToolGesture(ToolAction.DragComplete))
Me.ToolCommandBindings.Add(New ToolCommandBinding(beginDrag, AddressOf OnBeginDrag))
Me.ToolCommandBindings.Add(New ToolCommandBinding(drag, AddressOf OnDrag))
Me.ToolCommandBindings.Add(New ToolCommandBinding(endDrag, AddressOf OnEndDrag))
Me.ToolCommandBindings.Add(New ToolCommandBinding(resetMargins, AddressOf OnResetMargins))
End Sub
Private Sub OnBeginDrag(ByVal sender As Object, ByVal args As ExecutedToolEventArgs)
Dim data As GestureData = GestureData.FromEventArgs(args)
Me.BeginFocus(data)
Me.InputBindings.Add(dragBinding)
Me.InputBindings.Add(endDragBinding)
Me.initialMargin = CType(data.ImpliedSource.Properties("Margin").ComputedValue, Thickness)
End Sub
Private Sub OnDrag(ByVal sender As Object, ByVal args As ExecutedToolEventArgs)
Dim data As MouseGestureData = MouseGestureData.FromEventArgs(args)
Dim offX As Double = data.PositionDelta.X
Dim offY As Double = data.PositionDelta.Y
Dim newMargin As Thickness = initialMargin
newMargin.Bottom += offY
newMargin.Top += offY
newMargin.Left += offX
newMargin.Right += offX
data.ImpliedSource.Properties("Margin").SetValue(newMargin)
End Sub
Private Sub OnEndDrag(ByVal sender As Object, ByVal args As ExecutedToolEventArgs)
Description = "Adjust margin"
Me.Complete()
End Sub
Protected Overrides Sub OnCompleted(ByVal e As EventArgs)
Me.Cleanup()
MyBase.OnCompleted(e)
End Sub
Protected Overrides Sub OnReverted(ByVal e As EventArgs)
Me.Cleanup()
MyBase.OnReverted(e)
End Sub
Private Sub Cleanup()
Me.InputBindings.Remove(dragBinding)
Me.InputBindings.Remove(endDragBinding)
End Sub
Private Sub OnResetMargins(ByVal sender As Object, ByVal args As ExecutedToolEventArgs)
Dim data As GestureData = GestureData.FromEventArgs(args)
data.ImpliedSource.Properties("Margin").ClearValue()
End Sub
End Class
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Input;
using Microsoft.Windows.Design.Interaction;
namespace DemoControlLibrary.VisualStudio.Design
{
// A DockPanelMarginTask is attached to to the adorner
// offered by the DockPanelAdornerProvider class. When
// you drag the adorner, the target control's Margin
// property changes.
class DockPanelMarginTask : Task
{
InputBinding dragBinding, endDragBinding;
Thickness initialMargin;
// The DockPanelMarginTask constructor establishes mappings
// between user inputs and commands.
public DockPanelMarginTask()
{
ToolCommand beginDrag = new ToolCommand("BeginDrag");
ToolCommand drag = new ToolCommand("Drag");
ToolCommand endDrag = new ToolCommand("EndDrag");
ToolCommand resetMargins = new ToolCommand("ResetMargins");
this.InputBindings.Add(
new InputBinding(
beginDrag,
new ToolGesture(ToolAction.DragIntent, MouseButton.Left)));
this.InputBindings.Add(
new InputBinding(
resetMargins,
new ToolGesture(ToolAction.DoubleClick, MouseButton.Left)));
this.dragBinding = new InputBinding(
drag,
new ToolGesture(ToolAction.Move));
this.endDragBinding = new InputBinding(
endDrag,
new ToolGesture(ToolAction.DragComplete));
this.ToolCommandBindings.Add(
new ToolCommandBinding(beginDrag, OnBeginDrag));
this.ToolCommandBindings.Add(
new ToolCommandBinding(drag, OnDrag));
this.ToolCommandBindings.Add(
new ToolCommandBinding(endDrag, OnEndDrag));
this.ToolCommandBindings.Add(
new ToolCommandBinding(resetMargins, OnResetMargins));
}
private void OnBeginDrag(object sender, ExecutedToolEventArgs args)
{
GestureData data = GestureData.FromEventArgs(args);
this.BeginFocus(data);
this.InputBindings.Add(dragBinding);
this.InputBindings.Add(endDragBinding);
this.initialMargin = (Thickness)data.ImpliedSource.Properties[
"Margin"].ComputedValue;
}
private void OnDrag(object sender, ExecutedToolEventArgs args)
{
MouseGestureData data = MouseGestureData.FromEventArgs(args);
double offX = data.PositionDelta.X;
double offY = data.PositionDelta.Y;
Thickness newMargin = initialMargin;
newMargin.Bottom += offY;
newMargin.Top += offY;
newMargin.Left += offX;
newMargin.Right += offX;
data.ImpliedSource.Properties["Margin"].SetValue(newMargin);
}
private void OnEndDrag(object sender, ExecutedToolEventArgs args)
{
Description = "Adjust margin";
this.Complete();
}
protected override void OnCompleted(EventArgs e)
{
this.Cleanup();
base.OnCompleted(e);
}
protected override void OnReverted(EventArgs e)
{
this.Cleanup();
base.OnReverted(e);
}
private void Cleanup()
{
this.InputBindings.Remove(dragBinding);
this.InputBindings.Remove(endDragBinding);
}
private void OnResetMargins(object sender, ExecutedToolEventArgs args)
{
GestureData data = GestureData.FromEventArgs(args);
data.ImpliedSource.Properties["Margin"].ClearValue();
}
}
}
Sécurité des threads
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Voir aussi
Référence
Microsoft.Windows.Design.Interaction, espace de noms