public SynchronizeObjectViewModel()
        {
            var inpc = new ObservableObject {
                Name = "Bill"
            };
            var poco = new PlainObject {
                Name = "Steve"
            };

            // TwoWay synchronize
            TwoWay = inpc.ToReactivePropertyAsSynchronized(x => x.Name);

            // OneWay synchronize
            OneWay = inpc.ObserveProperty(x => x.Name).ToReactiveProperty();

            // OneWayToSource synchronize
            OneWayToSource = ReactiveProperty.FromObject(poco, x => x.Name);

            // synchronization check
            CheckCommand      = new ReactiveCommand();
            this.AlertMessage = CheckCommand.Select(_ =>
                                                    "INPC Name:" + inpc.Name + Environment.NewLine
                                                    + "POCO Name:" + poco.Name)
                                .ToReactiveProperty(mode: ReactivePropertyMode.None);
        }
        public SynchronizeObjectViewModel()
        {
            var inpc = new ObservableObject { Name = "Bill" };
            var poco = new PlainObject { Name = "Steve" };

            // TwoWay synchronize
            TwoWay = inpc.ToReactivePropertyAsSynchronized(x => x.Name);

            // OneWay synchronize
            OneWay = inpc.ObserveProperty(x => x.Name).ToReactiveProperty();

            // OneWayToSource synchronize
            OneWayToSource = ReactiveProperty.FromObject(poco, x => x.Name);

            // synchronization check
            CheckCommand = new ReactiveCommand();
            this.AlertMessage = CheckCommand.Select(_ => 
                "INPC Name:" + inpc.Name + Environment.NewLine
              + "POCO Name:" + poco.Name)
              .ToReactiveProperty(mode: ReactivePropertyMode.None);
        }