Событие ItemConstraint

Происходит при получении сообщения о конфликте ограничения применительно к конфликтам совпадения, если политика разрешения конфликтов совпадения задана как ApplicationDefined, и применительно ко всем остальным конфликтам ограничения, отличным от конфликтов совпадения.

Пространство имен:  Microsoft.Synchronization
Сборка:  Microsoft.Synchronization (в Microsoft.Synchronization.dll)

Синтаксис

'Декларация
Public Event ItemConstraint As EventHandler(Of ItemConstraintEventArgs)
'Применение
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);
}
member ItemConstraint : IEvent<EventHandler<ItemConstraintEventArgs>,
    ItemConstraintEventArgs>

Замечания

Это уведомление можно использовать в приложении для пользовательского устранения конфликтов применительно к конфликтам ограничений. Для этого приложение проверяет и обрабатывает содержимое объекта ItemConstraintEventArgs, отправленного обработчику события, задает действие по разрешению конфликта вызовом интерфейса SetResolutionAction, прежде чем выйти из этого метода.

При присваивании свойству ConstraintConflictReason объекта ItemConstraintEventArgs любого значения, кроме Collision, действие по разрешению конфликта должно быть либо SkipChange, либо SaveConflict.

Примеры

В следующем примере реализуется обработчик для события ItemConstraint. Обработчик отображает для пользователя конфликтующие элементы и задает действие по устранению конфликтов ограничений в зависимости от ответа пользователя.

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

См. также

Справочник

SyncCallbacks Класс

Элементы SyncCallbacks

Пространство имен Microsoft.Synchronization

Другие ресурсы

Обнаружение и разрешение конфликтов ограничений