ItemConstraintEventArgs Class

Provides data for the ItemConstraint event.

System.Object
  System.EventArgs
    Microsoft.Synchronization.ItemConstraintEventArgs

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

public class ItemConstraintEventArgs : EventArgs

The ItemConstraintEventArgs type exposes the following members.

  NameDescription
Public propertyConstraintConflictReasonGets the reason that the conflict occurred.
Public propertyDestinationChangeGets the change metadata from the destination provider.
Public propertyDestinationChangeDataGets an object that either contains or can be used to retrieve item data for the change item from the destination replica.
Public propertyDestinationOriginalChangeDataGets an object that either contains or can be used to retrieve item data for the item in the destination replica that originally caused the conflict.
Public propertyIsTemporaryGets a value that indicates whether the conflict is temporary.
Public propertyOriginalDestinationChangeGets the change metadata from the destination provider for the item that originally caused the conflict.
Public propertySourceChangeGets the change metadata from the source provider.
Public propertySourceChangeDataGets an object that either contains or can be used to retrieve item data for the change item from the source replica.
Top

  NameDescription
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetHashCode (Inherited from Object.)
Public methodGetResolutionAction()Gets the conflict resolution action for the conflict.
Public methodGetResolutionAction(ChangeUnitChange)Gets the conflict resolution action for the conflicting change unit change.
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Public methodSetResolutionAction(ConstraintConflictResolutionAction)Sets a conflict resolution action for the conflict.
Public methodSetResolutionAction(ChangeUnitChange, ConstraintConflictResolutionAction)Sets a conflict resolution action for the conflicting change unit change.
Public methodToString (Inherited from Object.)
Top

ItemConstraintEventArgs occurs when a constraint conflict is reported, for collision conflicts when the collision conflict resolution policy is set to ApplicationDefined, and for all non-collision constraint conflicts.

The following example implements a handler for the ItemConstraint event. The handler displays the conflicting items to the user and sets the constraint conflict resolution action based on the user's response.

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);
    }
}


Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show: