この記事の内容
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側に通知がいくようになります。この流れにより双方向バインディングが行われます。
双方向バインディングや単方向バインディングにするかは、設定により変更することが可能です。




コメント