かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

ReactivePropertyのPCL版をnugetに置いてみました(まだベータ)

のいえさん(id:neuecc)が作った素敵なReactivePropertyをPCL対応にしてみました。CodePlexのプロジェクトのメンバーにじんぐるさんと共に追加してもらって、とりあえず動く感じまでやってみました。

ターゲットプラットフォームは以下のものをサポートしています。

  • .NET Framework 4.5
  • Windows store app(Windows 8.1)
  • Windows Phone 8
  • Xamarin iOS(試して無いけどできそう)
  • Xamarin Android(試して無いけどできそう)

インストール方法

Visual Studioのパッケージマネージャー コンソールで以下のコマンドでインストールできます。

PM> Install-Package ReactiveProperty-PCL -Pre

コードスニペット

packages\ReactiveProperty-PCL.0.4.0.1-beta\Snippetにコードスニペットが入ってるので追加しておくと捗ると思います。

お試し

WPFでこんな感じでDataContextにセットするViewModelが書けるのが気持ちいい。

using Codeplex.Reactive;
using System;
using System.Reactive.Linq;

namespace WpfApplication1
{
    public class MainWindowViewModel
    {
        public ReactiveProperty<string> Input { get; private set; }
        public ReactiveProperty<string> Output { get; private set; }
        public ReactiveCommand ResetInputCommand { get; private set; }

        public MainWindowViewModel()
        {
            this.Input = new ReactiveProperty<string>();
            this.Output = this.Input
                .Where(s => !string.IsNullOrWhiteSpace(s))
                .Delay(TimeSpan.FromSeconds(5))
                .Select(s => s.ToUpper())
                .ToReactiveProperty();

            this.ResetInputCommand = new ReactiveCommand();
            this.ResetInputCommand.Subscribe(_ => this.Input.Value = "Hello world.");
        }
    }
}