{"record":{"id":"c83e6d8d592a2e82","repo":"dotnet/wpf","slug":"sr-noupdatesourcetriggerforinnerbindingofmultibinding","errorCode":null,"errorMessage":"SR.NoUpdateSourceTriggerForInnerBindingOfMultiBinding","messagePattern":"SR\\.NoUpdateSourceTriggerForInnerBindingOfMultiBinding","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Data/MultiBinding.cs","lineNumber":378,"sourceCode":"    //------------------------------------------------------\n\n    internal object DoFilterException(object bindExpr, Exception exception)\n    {\n        UpdateSourceExceptionFilterCallback callback = (UpdateSourceExceptionFilterCallback)GetValue(Feature.ExceptionFilterCallback, null);\n        if (callback != null)\n            return callback(bindExpr, exception);\n\n        return exception;\n    }\n\n    internal static void CheckTrigger(BindingBase bb)\n    {\n        Binding binding = bb as Binding;\n        if (binding != null)\n        {\n            if (binding.UpdateSourceTrigger != UpdateSourceTrigger.PropertyChanged &&\n                binding.UpdateSourceTrigger != UpdateSourceTrigger.Default)\n                throw new InvalidOperationException(SR.NoUpdateSourceTriggerForInnerBindingOfMultiBinding);\n        }\n    }\n\n    internal override BindingBase CreateClone()\n    {\n        return new MultiBinding();\n    }\n\n    internal override void InitializeClone(BindingBase baseClone, BindingMode mode)\n    {\n        MultiBinding clone = (MultiBinding)baseClone;\n\n        CopyValue(Feature.Converter, clone);\n        CopyValue(Feature.ConverterParameter, clone);\n        CopyValue(Feature.Culture, clone);\n        CopyValue(Feature.ValidationRules, clone);\n        CopyValue(Feature.ExceptionFilterCallback, clone);\n","sourceCodeStart":360,"sourceCodeEnd":396,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Data/MultiBinding.cs#L360-L396","documentation":"MultiBinding.CheckTrigger throws InvalidOperationException when an inner Binding of a MultiBinding uses an UpdateSourceTrigger other than PropertyChanged or Default. Inner bindings cannot use Explicit or LostFocus triggers because the MultiBinding controls updates as a whole.","triggerScenarios":"A child <Binding UpdateSourceTrigger=\"Explicit\"/> or UpdateSourceTrigger=\"LostFocus\" inside a MultiBinding, evaluated when the MultiBinding's binding expression is created (CreateBindingExpressionOverride calls CheckTrigger on each child).","commonSituations":"Copying a normal Binding with UpdateSourceTrigger=\"LostFocus\" into a MultiBinding; setting Explicit on an inner binding to defer source updates; template reuse where the inner binding's trigger was configured for standalone use.","solutions":["Remove the UpdateSourceTrigger setting from inner bindings (use Default)","Or set UpdateSourceTrigger=\"PropertyChanged\" on each inner Binding","Control update timing on the outer MultiBinding instead of the inner bindings"],"exampleFix":"<!-- before -->\n<MultiBinding Converter=\"{StaticResource conv}\">\n  <Binding Path=\"A\" UpdateSourceTrigger=\"LostFocus\"/>\n</MultiBinding>\n<!-- after -->\n<MultiBinding Converter=\"{StaticResource conv}\">\n  <Binding Path=\"A\" UpdateSourceTrigger=\"PropertyChanged\"/>\n</MultiBinding>","handlingStrategy":"validation","validationCode":"foreach (var b in multiBinding.Bindings.OfType<Binding>())\n    if (b.UpdateSourceTrigger != UpdateSourceTrigger.PropertyChanged && b.UpdateSourceTrigger != UpdateSourceTrigger.Default)\n        throw new InvalidOperationException(\"Inner bindings must use PropertyChanged or Default trigger\");","typeGuard":null,"tryCatchPattern":"try { BindingOperations.SetBinding(t, p, multiBinding); } catch (InvalidOperationException) { /* fix inner UpdateSourceTrigger */ }","preventionTips":["Never set Explicit/LostFocus triggers on MultiBinding inner bindings","Control update timing via the outer MultiBinding/its own trigger semantics","Audit copied bindings reused inside MultiBinding for leftover trigger settings"],"tags":["wpf","multibinding","updatesourcetrigger"],"backgroundTag":"invalid-enum-value","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-21T21:30:21.729Z"}