WPF + Prismでラベルのデータバインドをしてみる

csharp C#

この記事の内容

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側に通知がいくようになります。この流れにより双方向バインディングが行われます。

双方向バインディングや単方向バインディングにするかは、設定により変更することが可能です。

コメント