Prism入門(3)


以前に勉強してから時間が経ったので、もう一度MVVMを勉強し直す。

環境:Visual Studio Professional 2019 + Prism7.1

1.環境構築

1-1.Prismインストール

Visual Studioを起動し、[拡張機能]-[拡張機能の管理]から『Prism Tempkate Pack』(バージョンは2019/5/13時点では2.1.6)をインストールする。

1-2. .NETポータブルライブラリ対象パック

公式サンプルのファイルを開こうとしたらインストールする必要があった。

1-3.プロジェクト作成

新しいプロジェクトの作成で「Prism Blank App(WPF)」を選択する。

2.学習

2-1.公式サンプル

3.方針

3-1.MVVMの方針

Viewのコードビハインド側には基本的に何も書かない。
ViewのXAMLとViewModelで対応する。

4.データバインド

4-1.ラベルのバインド

XAML
<Label Content="{Binding SystemDateLabel}" />
ViewModel
        private string _systemDateLabel = System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
        public string SystemDateLabel
        {
            get { return _systemDateLabel; }
            set { SetProperty(ref _systemDateLabel, value); }
        }

4-2.ボタンのバインド

XAML
            <Button Content="{Binding BtnName}" Command="{Binding SystemDateUpdateButton}" />
ViewModel
 public MainWindowViewModel()
        {
            SystemDateUpdateButton = new DelegateCommand(SystemDateUpdateExecute);
        }

        //
        private string _systemDateLabel = System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
        public string SystemDateLabel
        {
            get { return _systemDateLabel; }
            set { SetProperty(ref _systemDateLabel, value); }
        }

        //

        private string _btnName = "時刻更新";
        public string BtnName
        {
            get { return _btnName; }
            set { SetProperty(ref _btnName, value); }
        }

        public DelegateCommand SystemDateUpdateButton { get; }

        private void SystemDateUpdateExecute()
        {
            SystemDateLabel = System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
        }

・ボタンのCommandにBindingで名前を付ける。
・ViewModelで付けた名前のDelegateCommandをプロパティで宣言する。
・コンストラクタでNewする。
・実行したいメソッドをPrivateで作成する。

5.画面遷移

5-1.ナビゲーション方式

  1. 「Views」フォルダを選択し、右クリックで[追加]-[新しい項目]で、「Prism User COntrol(WPF)」を追加する。

  2. ViewとViewModelが自動で作成される。

9.TIPS

9-1.画面表示

9-1-1.画面の表示位置を中央に

XAMLファイルに「WindowStartupLocation="CenterScreen"」を記載する。