Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does the pull request do?
Still a work in progress, but opening a PR for visibility.
Implements typed bindings which provide a non-boxing, no-reflection pipeline for binding values.
The
TypedBinding{TIn, TOut}
class represents a strongly-typed binding as opposed toBinding
which boxes value types. It is represented as a set of delegates:Read
reads the value given a binding inputWrite
writes a value given a binding inputLinks
holds a collection of delegates which when passed a binding input return each object traversed byRead
. For example if Read is implemented asx => x.Foo.Bar.Baz
then there would be three links:x => x.Foo
,x => x.Foo.Bar
andx => x.Foo.Bar.Baz
. These links are used to subscribe to change notifications.Basic code should mostly work but still needs integration with the XAML compiler. Currently typed bindings can only be created from lambda expressions at runtime.