BindingGroup.UpdateSources Метод

Определение

Выполняет преобразователь для привязки и объектов ValidationRule, у которых свойство ValidationStep имеет значение RawProposedValue, ConvertedProposedValue или UpdatedValue, и сохраняет значения целевых объектов в исходных объектах, если все правила проверки выполнены успешно.Runs the converter on the binding and the ValidationRule objects that have the ValidationStep property set to RawProposedValue, ConvertedProposedValue, or UpdatedValue and saves the values of the targets to the source objects if all the validation rules succeed.

public:
 bool UpdateSources();
public bool UpdateSources ();
member this.UpdateSources : unit -> bool
Public Function UpdateSources () As Boolean

Возвращаемое значение

Boolean

true, если все правила проверки выполнены успешно; в противном случае — false.true if all validation rules succeed; otherwise, false.

Примеры

Следующий пример является частью приложения, предлагающего пользователю ввести нескольких клиентов и назначить торгового представителя каждому клиенту.The following example is part of an application that prompts the user to enter multiple customers and assign a sales representative to each customer. Приложение проверяет, относится ли торговый отдел и клиент к одному региону.The application checks that the sales representative and the customer belong to the same region. В примере вызывается UpdateSources Проверка привязок и сохранение значений в источнике, если все правила проверки выполнены.The example calls UpdateSources to validate the bindings and save the values to the source if all the validation rules succeed.

void saveCustomer_Click(object sender, RoutedEventArgs e)
{
    Button btn = sender as Button;
    FrameworkElement container = (FrameworkElement) customerList.ContainerFromElement(btn);

    // If the user is trying to change an items, when another item has an error,
    // display a message and cancel the currently edited item.
    if (bindingGroupInError != null && bindingGroupInError != container.BindingGroup)
    {
        MessageBox.Show("Please correct the data in error before changing another customer");
        container.BindingGroup.CancelEdit();
        return;
    }

    if (container.BindingGroup.UpdateSources())
    {
        bindingGroupInError = null;
        MessageBox.Show("Item Saved");
    }
    else
    {
        bindingGroupInError = container.BindingGroup;
    }
}
Private Sub saveCustomer_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim btn As Button = TryCast(sender, Button)
    Dim container As FrameworkElement = CType(customerList.ContainerFromElement(btn), FrameworkElement)

    ' If the user is trying to change an items, when another item has an error,
    ' display a message and cancel the currently edited item.
    If bindingGroupInError IsNot Nothing AndAlso bindingGroupInError IsNot container.BindingGroup Then
        MessageBox.Show("Please correct the data in error before changing another customer")
        container.BindingGroup.CancelEdit()
        Return
    End If

    If container.BindingGroup.UpdateSources() Then
        bindingGroupInError = Nothing
        MessageBox.Show("Item Saved")
    Else
        bindingGroupInError = container.BindingGroup
    End If

End Sub

Комментарии

Этот метод обновляет источник, если каждый из ValidationRule них завершается успешнее, но не приводит к тому, что источники фиксируют ожидающие изменения и завершают транзакцию изменения.This method updates the source if every ValidationRule succeeds, but it does not cause the sources to commit the pending changes and end the edit transaction. То есть, если исходный объект реализует IEditableObject .That is, if the source object implements IEditableObject. Вызов этого метода не приводит EndEdit к вызову.Calling this method does not cause EndEdit to be called. Используйте CommitEdit метод, чтобы источники зафиксировали ожидающие изменения.Use the CommitEdit method to have the sources commit the pending changes.

Применяется к