2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Prism入門(3)

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

環境:Visual Studio Professional 2019 + Prism7.1

1.環境構築

1-1.Prismインストール

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

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

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

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

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

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)」を追加する。
    image.png

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

9.TIPS

9-1.画面表示

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?