Task (Clase)
Representa una colección de comandos y enlaces de entrada a esos comandos.
Jerarquía de herencia
System.Object
Microsoft.Windows.Design.Interaction.Task
Espacio de nombres: Microsoft.Windows.Design.Interaction
Ensamblado: Microsoft.Windows.Design.Interaction (en Microsoft.Windows.Design.Interaction.dll)
Sintaxis
'Declaración
Public Class Task
public class Task
public ref class Task
type Task = class end
public class Task
El tipo Task expone los siguientes miembros.
Constructores
Nombre | Descripción | |
---|---|---|
Task | Inicializa una nueva instancia de la clase Task. |
Arriba
Propiedades
Nombre | Descripción | |
---|---|---|
AdornerFilter | Obtiene o establece el filtro que se utiliza para filtrar el conjunto de adornos detectado por el algoritmo de prueba de posicionamiento del diseñador. | |
CommandBindings | Obtiene la clase CommandBindingCollection de una tarea. | |
Cursor | Obtiene o establece el cursor de una tarea. | |
Description | Obtiene o establece la descripción de esta tarea. | |
InputBindings | Obtiene la clase InputBindingCollection de una tarea. | |
IsFocused | Obtiene un valor que indica si esta tarea tiene el foco. | |
ModelFilter | Obtiene o establece el filtro que se utiliza para filtrar el conjunto de elementos de modelo detectado por el algoritmo de prueba de posicionamiento del diseñador. | |
ToolCommandBindings | Obtiene la clase ToolCommandBindingCollection de una tarea. |
Arriba
Métodos
Nombre | Descripción | |
---|---|---|
BeginFocus | Empieza a establecer el foco de la tarea. | |
Complete | Completa los cambios que se realizaron mientras esta tarea tenía el foco. | |
Equals | Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object). | |
Finalize | Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object). | |
GetHashCode | Actúa como función hash para un tipo concreto. (Se hereda de Object). | |
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). | |
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda de Object). | |
OnCompleted | Provoca el evento Completed. | |
OnFocusDeactivated | Provoca el evento FocusDeactivated. | |
OnReverted | Provoca el evento Reverted. | |
Revert | Revierte esta tarea. | |
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). |
Arriba
Eventos
Nombre | Descripción | |
---|---|---|
Completed | Se produce cuando esta tarea se ha completado. | |
FocusDeactivated | Se produce cuando se desactiva el foco de esta tarea. | |
Reverted | Se produce cuando se revierte esta tarea. |
Arriba
Comentarios
Un objeto Task representa una colección de enlaces de entrada y comandos que se pueden asociar a un elemento de interfaz de usuario en el diseñador. Cuando una tarea está activa, todas las entradas del usuario se direccionan a la tarea, y se pueden ejecutar los comandos asociados a los enlaces de entrada. Cuando la tarea está desactivada, las entradas del usuario recuperan la normalidad.
Se puede adornar una tarea con los atributos RequiresServiceAttribute y RequiresContextItemAttribute. En caso de que se adorne una tarea con estos atributos, no se utilizará la tarea a menos que estén disponibles los servicios y elementos de contexto necesarios.
Ejemplos
En el siguiente ejemplo de código, se muestra cómo utilizar la clase Task. Para obtener más información, vea Cómo: Crear una directiva suplente.
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();
}
}
}
Seguridad para subprocesos
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Vea también
Referencia
Microsoft.Windows.Design.Interaction (Espacio de nombres)