この記事の内容
WPF + Prismを使用して、ラベルコントロールのデータバインドを行う方法を解説します。
実装方法を解説した後に、簡単な仕組みを解説します。
実装方法
MainWindow.xamlに<Label Content=”{Binding LabelName}”/>の記載を追加します。
Contentは、Windows FormでいうとTextにあたるものです。
“{Binding LabelName}”で、ViewModel側のLabelNameプロパティとバインドするという命令になります。
ViewModel側では以下の様に記載します。
テンプレートのデフォルトで、Titleを設定している箇所がありますが、これと同様に、LabelNameの部分を追加します。
using Prism.Mvvm; namespace WPFSample.ViewModels { public class MainWindowViewModel : BindableBase { private string _title = "Prism Application"; public string Title { get { return _title; } set { SetProperty(ref _title, value); } } private string _labelName = "ラベルA"; public string LabelName { get { return _labelName; } set { SetProperty(ref _labelName, value); } } public MainWindowViewModel() { } } }
この状態で実行すると、以下の様にラベルAという文字列がバインドされて表示されていることがわかります。
ここまでが、実装方法になります。
解説
まず、{Binding LabelName}の記載で、ViewとViewModelのバインディングが行われます。
また、ViewModel側で継承しているPrismのBindableBaseのSetPropertyメソッドにより、LabelNameプロパティが変更されるとViewModel側に通知がいくようになります。この流れにより双方向バインディングが行われます。
双方向バインディングや単方向バインディングにするかは、設定により変更することが可能です。
コメント