Task-Klasse
Stellt eine Auflistung von Befehlen und Eingabebindungen zu diesen Befehlen dar.
Vererbungshierarchie
System.Object
Microsoft.Windows.Design.Interaction.Task
Namespace: Microsoft.Windows.Design.Interaction
Assembly: Microsoft.Windows.Design.Interaction (in Microsoft.Windows.Design.Interaction.dll)
Syntax
'Declaration
Public Class Task
public class Task
public ref class Task
type Task = class end
public class Task
Der Task-Typ macht die folgenden Member verfügbar.
Konstruktoren
Name | Beschreibung | |
---|---|---|
Task | Initialisiert eine neue Instanz der Task-Klasse. |
Zum Seitenanfang
Eigenschaften
Name | Beschreibung | |
---|---|---|
AdornerFilter | Ruft den Filter ab, der zum Filtern des Satzes von Adornern verwendet wird, der vom Treffertestalgorithmus des Designers angezeigt wird, oder legt diesen Filter fest. | |
CommandBindings | Ruft CommandBindingCollection für eine Aufgabe ab. | |
Cursor | Ruft den Cursor für eine Aufgabe ab oder legt diesen fest. | |
Description | Ruft die Beschreibung für diese Aufgabe ab oder legt diese fest. | |
InputBindings | Ruft InputBindingCollection für eine Aufgabe ab. | |
IsFocused | Ruft einen Wert ab, der angibt, ob diese Aufgabe den Fokus besitzt. | |
ModelFilter | Ruft den Filter ab, der zum Filtern des Satzes von Modellelementen verwendet wird, der vom Treffertestalgorithmus des Designers angezeigt wird, oder legt diesen Filter fest. | |
ToolCommandBindings | Ruft ToolCommandBindingCollection für eine Aufgabe ab. |
Zum Seitenanfang
Methoden
Name | Beschreibung | |
---|---|---|
BeginFocus | Beginnt, den Fokus für die Aufgabe festzulegen. | |
Complete | Schließt Änderungen ab, die vorgenommen wurden, während diese Aufgabe den Fokus besitzt. | |
Equals | Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.) | |
Finalize | Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.) | |
GetHashCode | Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.) | |
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) | |
MemberwiseClone | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) | |
OnCompleted | Löst das Completed-Ereignis aus. | |
OnFocusDeactivated | Löst das FocusDeactivated-Ereignis aus. | |
OnReverted | Löst das Reverted-Ereignis aus. | |
Revert | Setzt diese Aufgabe zurück. | |
ToString | Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.) |
Zum Seitenanfang
Ereignisse
Name | Beschreibung | |
---|---|---|
Completed | Tritt auf, wenn diese Aufgabe abgeschlossen wurde. | |
FocusDeactivated | Tritt auf, wenn der Fokus für diese Aufgabe deaktiviert wird. | |
Reverted | Tritt auf, wenn diese Aufgabe zurückgesetzt wird. |
Zum Seitenanfang
Hinweise
Eine Task stellt eine Auflistung von Eingabebindungen und Befehlen dar, die im Designer einem Element der Benutzeroberfläche zugeordnet werden können. Wenn eine Aufgabe aktiv ist, werden alle Benutzereingaben an diese Aufgabe geleitet und Befehle, denen Eingabebindungen zugeordnet sind, können ausgeführt werden. Wenn die Aufgabe deaktiviert wird, werden Benutzereingaben wieder normal verarbeitet.
Sie können einer Aufgabe RequiresServiceAttribute-Attribute und RequiresContextItemAttribute-Attribute hinzufügen. Wenn Sie diese Attribute hinzufügen, wird diese Aufgabe erst dann verwendet, wenn die erforderlichen Dienste und Kontextelemente verfügbar werden.
Beispiele
Im folgenden Codebeispiel wird die Verwendung der Task-Klasse veranschaulicht. Weitere Informationen finden Sie unter Gewusst wie: Erstellen einer Ersatzrichtlinie.
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();
}
}
}
Threadsicherheit
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Siehe auch
Referenz
Microsoft.Windows.Design.Interaction-Namespace