2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Xamarin.Forms+ReactivePropertyでスマホアプリ開発!《ReactiveProperty編》

Last updated at Posted at 2018-03-23

【記事ツリー】

概要

 Xamarin.Forms+ReactivePropertyでスマホアプリ開発!《本編》において、どのようにReactivePropertyを活用したのかといった話です。ReactivePropertyについての説明は次のページを参照してください。
  【C#】ReactiveProperty全然分からねぇ!って人向けのFAQ集【修正済】

ReactiveProperty<T>編

 コントロールのプロパティによく利用される型ですが、Xamarin.Formsでも使用できます。注意したいのは、Xamarin.FormsにはUpdateSourceTriggerという概念が無く、言うなれば常にUpdateSourceTrigger="PropertyChanged"している状態だということです。
 つまり、コントロールの操作によりBindingで紐づけされたデータが即時に更新され(OneWayToSource方向)、データを更新するとコントロールの内容が即座に書き換わります(OneWay方向)。Xamarin.FormsにOneTimeという概念は存在しないそうですので、OneWay辺りで代用しましょう。
 ちなみに、「ReactivePropertyCombineLatestで繋げながらReadOnlyReactivePropertyを生成する」定番テクニックもXamarin.Formsでは使用できます

ReactiveCollection<T>編

 <Picker>ItemSourceプロパティなどに利用される型ですが(以下略)。こちらはReactiveProperty<T>と違い、XAMLにBindingする際は{Binding Hoge.Value}ではなく{Binding Hoge}でいいことに注意しましょう。
 また、コンストラクタ以降一切変更する気がなければ、タダのList<T>でも用を果たせます(ObservableCollection<T>を使うのは変更通知のためなので)。

 ところで、ReactiveCollection<T>におけるTって参照型しか使えないのはなぜなのでしょう? ObservableCollection<T>なら値型でも大丈夫なのに……。

ReactiveCommand編

 <Button>Commandプロパティなどに(以下略)。Xamarin.Formsだからどうこうといった話は私が知る限りありませんので、普通にSubscribeでイベントを貼り付けていきましょう。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?