Skip to content

Commit

Permalink
Implement public interface for Property Binding
Browse files Browse the repository at this point in the history
  • Loading branch information
anaisbetts committed Aug 14, 2012
1 parent e8739c4 commit 6758697
Showing 1 changed file with 59 additions and 0 deletions.
59 changes: 59 additions & 0 deletions ReactiveUI/PropertyBinding.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,65 @@

namespace ReactiveUI
{
public static class BindingMixins
{
static IPropertyBinderImplementation binderImplementation;

static BindingMixins()
{
binderImplementation = new PropertyBinderImplementation();
}

public static IDisposable Bind<TViewModel, TView, TProp>(
this TView view,
TViewModel viewModel,
Expression<Func<TViewModel, TProp>> vmProperty,
Expression<Func<TView, TProp>> viewProperty)
where TViewModel : class
where TView : class, IViewForViewModel<TViewModel>
{
return binderImplementation.Bind(viewModel, view, vmProperty, viewProperty);
}

public static IDisposable OneWayBind<TViewModel, TView, TProp>(
this TView view,
TViewModel viewModel,
Expression<Func<TViewModel, TProp>> vmProperty,
Expression<Func<TView, TProp>> viewProperty,
Func<TProp> fallbackValue = null)
where TViewModel : class
where TView : class, IViewForViewModel<TViewModel>
{
return binderImplementation.OneWayBind(viewModel, view, vmProperty, viewProperty, fallbackValue);
}

public static IDisposable OneWayBind<TViewModel, TView, TProp, TOut>(
this TView view,
TViewModel viewModel,
Expression<Func<TViewModel, TProp>> vmProperty,
Expression<Func<TView, TOut>> viewProperty,
Func<TProp, TOut> selector,
Func<TOut> fallbackValue = null)
where TViewModel : class
where TView : class, IViewForViewModel<TViewModel>
{
return binderImplementation.OneWayBind(viewModel, view, vmProperty, viewProperty, selector, fallbackValue);
}

public static IDisposable AsyncOneWayBind<TViewModel, TView, TProp, TOut>(
this TView view,
TViewModel viewModel,
Expression<Func<TViewModel, TProp>> vmProperty,
Expression<Func<TView, TOut>> viewProperty,
Func<TProp, IObservable<TOut>> selector,
Func<TOut> fallbackValue = null)
where TViewModel : class
where TView : class, IViewForViewModel<TViewModel>
{
return binderImplementation.AsyncOneWayBind(viewModel, view, vmProperty, viewProperty, selector, fallbackValue);
}
}

public interface IPropertyBinderImplementation
{
IDisposable Bind<TViewModel, TView, TProp>(
Expand Down

0 comments on commit 6758697

Please sign in to comment.