From ae977c5fb66c2c4961bad1858418d146642c0bf6 Mon Sep 17 00:00:00 2001 From: Joshua Marner Date: Tue, 4 Oct 2022 14:07:31 -0500 Subject: [PATCH] Change InitializeBindingWithValidation to a member --- src/Elmish.WPF/DynamicViewModel.fs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/Elmish.WPF/DynamicViewModel.fs b/src/Elmish.WPF/DynamicViewModel.fs index 6e57baf4..78037e15 100644 --- a/src/Elmish.WPF/DynamicViewModel.fs +++ b/src/Elmish.WPF/DynamicViewModel.fs @@ -68,17 +68,6 @@ type [] internal DynamicViewModel<'model, 'msg> | None -> log.LogError("SubModelSelectedItem binding referenced binding {SubModelSeqBindingName} but no binding was found with that name", name) None - let initializeBindingWithValidation selectedItemTargetBindings binding = - option { - let! vmBinding = - Initialize(loggingArgs, binding.Name, getFunctionsForSubModelSelectedItem selectedItemTargetBindings) - .Recursive(initialModel, dispatch, (fun () -> currentModel), binding.Data) - FirstValidationErrors().Recursive(vmBinding) - |> Option.iter (fun errorList -> - validationErrors.Add(binding.Name, errorList)) - return vmBinding - } - let bindings = log.LogTrace("[{BindingNameChain}] Initializing bindings", nameChain) let bindingDict = Dictionary>(bindings.Length) @@ -90,12 +79,22 @@ type [] internal DynamicViewModel<'model, 'msg> log.LogError("Binding name {BindingName} is duplicated. Only the first occurrence will be used.", b.Name) else option { - let! vmBinding = initializeBindingWithValidation bindingDict b + let! vmBinding = this.InitializeBindingWithValidation (bindingDict, b) do bindingDict.Add(b.Name, vmBinding) return () } |> Option.defaultValue () bindingDict :> IReadOnlyDictionary<_,_> + member internal _.InitializeBindingWithValidation (selectedItemTargetBindings: IReadOnlyDictionary, binding) = + option { + let! vmBinding = + Initialize(loggingArgs, binding.Name, getFunctionsForSubModelSelectedItem selectedItemTargetBindings) + .Recursive(initialModel, dispatch, (fun () -> currentModel), binding.Data) + FirstValidationErrors().Recursive(vmBinding) + |> Option.iter (fun errorList -> + validationErrors.Add(binding.Name, errorList)) + return vmBinding + } member internal _.CurrentModel : 'model = currentModel