Giter VIP home page Giter VIP logo

propertychanged's Introduction

Reactive Marbles Property Changed

Packages

Container NuGet
PropertyChanged PropertyChangedBadge
PropertyChanged.SourceGenerator PropertyChangedSourceGenBadge

Overview

A framework for providing an observable with the latest value of a property expression.

The source generator version will generate raw source code for the binding. If you have private/protected classes and/or properties it may require partial classes.

The regular version will use Expression trees on platforms that support it (no iOS based platforms). On iOS it will just use reflection. This provides a roughly 2x performance boost for those platforms that can use expression trees.

this.WhenChanged(x => x.Property1.Property2.Property3);

The above will generate a IObservable<T> where T is the type of Property3. It will signal each time a value has changed. It is aware of all property changes in the property chain.

Binding

There are several methods of binding.

First is two way binding. Two way binding will update either the host or the target whenever the target property has changed.

host.BindTwoWay(target, host => host.B.C, target => target.D.E);

One way binding will only update the target with changes the host's specified target property.

host.BindOneWay(target, host => host.B.C);

There are also overloads with lambdas that allow you to convert from the host to the target. These will allow you to convert at binding time to the specified formats.

host.BindOneWay(target, host => host.B.C, hostProp => ConvertToTargetPropType(hostProp));
host.BindTwoWay(target, host => host.B.C, target => target.D.E, hostProp => ConvertToTargetPropType(hostProp), targetProp => ConvertToHostPropType(targetProp));

Limitations compared to ReactiveUI

At the moment it only supports INotifyPropertyChanged properties. More property types to come such as WPF DependencyProperty.

Milestones

  • Implement initial binding and property changes.

Benchmark Comparisons

Detailed benchmarking results can be found here.

propertychanged's People

Contributors

glennawatson avatar dependabot-preview[bot] avatar dependabot[bot] avatar cabauman avatar thargy avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.