This can be a bit tricky, so I'll walk through the code required for this.
First, I'll implement a couple Dependency Object extension methods that make traversing the visual tree simpler:publicstatic IEnumerable Enumerate Visual Descendents(this Dependency Object dependency Object)Next, I'll implement a Dependency Object extension method that updates the binding sources for all Dependency Propertys on that Dependency Object and all of its visual descendents:publicstaticvoid Update Binding Sources(this Dependency Object dependency Object)All that's needed at this point is to invoke the Update Binding Sources extension method on an appropriate Dependency Object (such as the top level Window) before submitting the data.
An extremely common case of this is the default behavior of bindings on the Text property of a Text Box.It's also worth noting that this generic solution can be incorrect in certain binding scenarios.For example, an application might be using Bindings with the Update Source Trigger set to Explicit and use some special criteria to decide when to commit the binding changes.This will ensure that the values in all binding targets have been pushed back to the binding sources.If the application in question has multiple Windows that should all have their binding sources updated, one more extension method may be useful:publicstaticvoid Update Binding Sources(this Application application)Optionally, this extension method could be called before submitting the data: Application. Update Binding Sources(); It probably seems like this could be incredibly slow, but in practice, I've found that this causes no noticeable delay in a medium sized application with a significant number of bindings.So I am actually trying to use ng-options in my select list, specifically, "as opt.label for opt in data.values Enum". I did not realize you could use both ng-options and tags. This seems like a fairly significant bug in the select directive to me, but your initial post is over 6 months old.When my initial value is undefined, the first change from null to data.values Enum my model updates and ng-change fires and all is good. No one is banging down the door looking for a real fix? A Plunker with the repro steps and showing the issue in action is here: Ibe Umd Zf J95l A5ssb E?p=preview The problem is that because we have removed the first "unknown" holding element, the select element does not fire the "change" event when you move down one more, since I guess, internally the selected index has not changed: The problem is that because we have removed the first "unknown" holding element, the select element does not fire the "change" event when you move down one more, since I guess, internally the selected index has not changed: @chalisegrogan Wow, thanks for the quick reply, Chalise.Obviously in such a case, an indiscriminant call to the Update Binding Sources extension method might thwart those efforts.Again, in practice I've found this generic solution to solve the underlying problem without significant side effects.