Freigeben über


SyncCallbacks.ItemConstraint-Ereignis

Tritt beim Melden eines Einschränkungskonflikts für Kollisionskonflikte auf, wenn die Richtlinie zur Kollisionskonfliktauflösung auf ApplicationDefined festgelegt ist, und für alle Nicht-Kollisionseinschränkungskonflikte.

Namespace: Microsoft.Synchronization
Assembly: Microsoft.Synchronization (in microsoft.synchronization.dll)

Syntax

'Declaration
Public Event ItemConstraint As EventHandler(Of ItemConstraintEventArgs)
'Usage
Dim instance As SyncCallbacks
Dim handler As EventHandler(Of ItemConstraintEventArgs)

AddHandler instance.ItemConstraint, handler
public event EventHandler<ItemConstraintEventArgs> ItemConstraint
public:
event EventHandler<ItemConstraintEventArgs^>^ ItemConstraint {
    void add (EventHandler<ItemConstraintEventArgs^>^ value);
    void remove (EventHandler<ItemConstraintEventArgs^>^ value);
}
/** @event */
public void add_ItemConstraint (EventHandler<ItemConstraintEventArgs> value)

/** @event */
public void remove_ItemConstraint (EventHandler<ItemConstraintEventArgs> value)
JScript supports the use of events, but not the declaration of new ones.

Hinweise

Diese Benachrichtigung kann von einer Anwendung verwendet werden, um eine benutzerdefinierte Konfliktauflösung für Einschränkungskonflikte auszuführen. Hierzu überprüft und verarbeitet die Anwendung den Inhalt des ItemConstraintEventArgs-Objekts, das an den Ereignishandler gesendet wird, und legt dann die Auflösungsaktion für den Konflikt fest, indem SetResolutionAction vor der Rückgabe von dieser Methode aufgerufen wird.

Wenn die ConstraintConflictReason-Eigenschaft des ItemConstraintEventArgs-Objekts auf einen anderen Wert als Collision festgelegt ist, muss die Auflösungsaktion auf SkipChange oder SaveConflict festgelegt werden.

Beispiel

Im folgenden Beispiel wird ein Handler für das ItemConstraint-Ereignis implementiert. Der Handler zeigt dem Benutzer die Konflikt verursachenden Elemente an und legt die Einschränkungs-Konfliktauflösungsaktion auf Grundlage der Antwort des Benutzers fest.

Private Sub HandleItemConstraint(ByVal sender As [Object], ByVal args As ItemConstraintEventArgs)
    If ConstraintConflictReason.Collision = args.ConstraintConflictReason Then
        ' Display the two items that are in conflict and solicit a resolution from the user.
        Dim srcContact As New Contact(DirectCast(args.SourceChangeData, String()))
        Dim destContact As New Contact(DirectCast(args.DestinationChangeData, String()))
        Dim msg As String = ("Source change is " & srcContact.ToString() & vbLf & "Destination change is ") & destContact.ToString() & vbLf & "Click Yes to rename the source change and apply it." & vbLf & "Click No to rename the destination item and apply the source change." & vbLf & "Click Cancel to delete the destination item and apply the source change."
        Dim ccDlg As New ConstraintConflictDlg(msg)
        ccDlg.ShowDialog()

        ' Set the resolution action based on the user's response.
        args.SetResolutionAction(ccDlg.Resolution)
    Else
        args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict)
    End If
End Sub
void HandleItemConstraint(Object sender, ItemConstraintEventArgs args)
{
    if (ConstraintConflictReason.Collision == args.ConstraintConflictReason)
    {
        // Display the two items that are in conflict and solicit a resolution from the user.
        Contact srcContact = new Contact((string[])args.SourceChangeData);
        Contact destContact = new Contact((string[])args.DestinationChangeData);
        string msg = "Source change is " + srcContact.ToString() +
                   "\nDestination change is " + destContact.ToString() +
                   "\nClick Yes to rename the source change and apply it." +
                   "\nClick No to rename the destination item and apply the source change." +
                   "\nClick Cancel to delete the destination item and apply the source change.";
        ConstraintConflictDlg ccDlg = new ConstraintConflictDlg(msg);
        ccDlg.ShowDialog();

        // Set the resolution action based on the user's response.
        args.SetResolutionAction(ccDlg.Resolution);
    }
    else 
    {
        args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict);
    }
}

Siehe auch

Verweis

SyncCallbacks-Klasse
SyncCallbacks-Member
Microsoft.Synchronization-Namespace

Konzepte

Erkennen und Auflösen von Einschränkungskonflikten