BindingGroup.UpdateSources BindingGroup.UpdateSources BindingGroup.UpdateSources BindingGroup.UpdateSources Method

定義

バインディングおよび 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.

適用対象