Model-View-ViewModel (MVVM)を導入する

NuGetパッケージマネージャでインストールしたPrism.Coreに含まれるBindableBase を継承したViewModelクラスを作成する。

using Prism.Mvvm;

namespace AddressBook
{
    internal class MainWindowViewModel : BindableBase
    {
        private string _name = string.Empty;

        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                SetProperty(ref _name, value);
            }
        }
    }
}

xamlのテキストボックスにBindingタグを追加する。

<TextBox x:Name="textName" Grid.Column="1" Grid.Row="1" Margin="4, 4, 4, 4">
    <Binding Path="Name" UpdateSourceTrigger="PropertyChanged"/>
</TextBox>

コンストラクタでViewModelのインスタンスを生成してDataContext プロパティに設定する。

using System.Windows;

namespace AddressBook
{
    public partial class MainWindow : Window
    {
        private MainWindowViewModel ViewModel { get; set; }
        public MainWindow()
        {
            InitializeComponent();
            ViewModel = new MainWindowViewModel();
            DataContext = ViewModel;
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            ViewModel.Name = "山田太郎";
        }
    }
}

以降、ViewModel.【プロパティ名】で書き込むとTextBoxに反映される。入力された値はViewModel.【プロパティ名】で読み取ると取得することができる。ラクチン。

トップページ

コメント

タイトルとURLをコピーしました