Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

Xamarin.Forms + Prism.FormsのMVVMの基本的なクラス

$
0
0

変更通知用のINotifyPropertyChangedとコマンド用のICommand実装クラスが提供されています。

INotifyPropertyChangedの実装クラス

BindableBaseクラスになります。SetPropertyというメソッドがあって、変更通知プロパティを以下のように定義できるようになっています。

privateint hoge;
publicint Hoge
{
  get { returnthis.hoge; }
  set { this.SetProperty(refthis.hoge, value); }
}

この他に、指定したプロパティの変更通知ができるOnPropertyChangedメソッドなど、MVVMでアプリ書いたことがある人ならだれもが一度は実装したことあるようなおなじみのメソッドがあります。

ICommandの実装クラス

DelegateCommandクラスになります。コンストラクタの引数にExecute時に呼ばれる処理と、CanExecute時に呼ばれる処理を渡します。

this.HogeCommand = new DelegateCommand(this.HogeExecute, this.CanHogeExecute);

CanExecuteの変更通知に関してはRaiseCanExecuteChangedメソッドで行います。

this.HogeCommand.RaiseCanExecuteChanged();

RaiseCanExecuteChangedを呼ぶのは大体プロパティの変更タイミングなので、そういうケースに対応するためにObservePropertyというメソッドも定義されていたりします。式木で、プロパティを渡すことで、渡したプロパティが変更があったときにRaiseCanExecuteChangedを自動で呼び出してくれるようになります。 例えば、Titleプロパティが変わったときにRaiseCanExecuteChangedが呼ばれるようにするには以下のように書きます。

this.HogeCommand = new DelegateCommand(this.HogeExecute, this.CanHogeExecute)
    .ObservesProperty(() => this.Title);

Viewing all articles
Browse latest Browse all 1387

Trending Articles