- `OneTime` bindings are failing to release their subscription if the `DataContext` is unset when the binding is made.
- Combining `OneTime` and `OneWayToSource` bindings are causing an NRE. The NRE is being caught but it too results in a subscription being leaked.
`TemplateBinding_With_Null_Path_Works` is a failing test for #1303, also added a passing test for the same thing with `Binding`: `Binding_With_Null_Path_Works`.
Update Rx.Net dependency to match reactiveui's dependency on Rx.
Removed ReactiveUI dependeny in BindingTests.
Updated BindingTest sample to use the new reactiveui APIs.
Update samples to use current ReactiveUI APIs.
Fixed bug I introduced into tests.
Remove RxUI submodule info from .gitmodules
To do this needed to change behavior a little in that now binding errors update the target. Previously in the case of a binding error at the first node in the binding chain, we were converting the `BindingNotification` to `UnsetValue` which had the effect of updating the target value. Now we're passing the `BindingNotification` back, we need to make sure this happens. I believe this is the right thing to do as the behavior should be the same no matter where in the binding chain the error occurs. Data validation errors continue to not update the target.
`ExpressionSubject` wasn't a good name as the important thing it isn't
convert an `ExpressionObserver` into an `ISubject`. The important thing
it does is insert an `IValueConverter` into the pipeline.
This is needed so that things like the following can be done:
<TreeView>
<TreeView.Styles>
<Style Selector="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding IsExpanded}"/>
</Style>
</TreeView.Styles>
<TreeView>
(At the moment we have TreeDataTemplate.IsExpanded but this isn't good
enough: it only supports setting IsExpanded on creation of the item with
no binding.)
With this commit, setters can now contain bindings, but they aren't yet
applied correctly. As part of this commit, classes related to binding
have been moved to the Perspex.Data namespace.
Need to special-case binding to DataContext as previously it was trying
to bind to itself. When binding to DataContext, we're binding to the
*parent* DataContext.