Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.96 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Linq;
  5. using System.Linq.Expressions;
  6. using System.Reflection;
  7. using System.Text;
  8.  
  9. using Revolucent.Dasso.Core;
  10.  
  11. namespace Revolucent.Dasso.Program.Binding
  12. {
  13.     static class Binding
  14.     {
  15.         public static void SetBinding<S, P>(this S source, Expression<Func<P>> sourceGetterExpression, params Action<P>[] targetSetters)
  16.             where S : INotifyPropertyChanged
  17.         {
  18.             var sourceGetter = sourceGetterExpression.Compile();
  19.             var memberExpression = (MemberExpression)sourceGetterExpression.Body;
  20.             var propertyName = memberExpression.Member.Name;
  21.             source.PropertyChanged += (sender, e) =>
  22.                 {
  23.                     if (e.PropertyName != propertyName)
  24.                         return;
  25.                     targetSetters.ForEach(setter => setter(sourceGetter()));
  26.                 };
  27.         }
  28.     }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement