BindingGroup.UpdateSources メソッド

定義

バインディングおよび ValidationRule プロパティが ValidationStepRawProposedValue、または 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

戻り値

すべての検証ルールが成功した場合は true。それ以外の場合は falsetrue 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.

適用対象