質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MVVM

MVVM(Model View ViewModel)は構築上のデザインパターンで、表現ロジック(ViewModel)によってデータ(Model)からページ(View)を分離させます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

2058閲覧

[WPF][MVVM] 2つ以上のViewがある場合のModelからのViewへの変更通知に関して

Base

総合スコア28

MVVM

MVVM(Model View ViewModel)は構築上のデザインパターンで、表現ロジック(ViewModel)によってデータ(Model)からページ(View)を分離させます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2019/02/27 15:29

編集2019/02/27 15:35

前提・実現したいこと

Visual Stadio2015
WPFにて初めてMVVMの設計思想にてコーディング(Prism 未使用)

WPFを使って、MVVMの設計にてシステムを作っています。
ViewにUserControlを追加して、Viewからの描写指示(ボタンとか)にてUserControlに画像を挿入したいと考えています。

困っていること

下記の構成を考えた時に、View1にてボタン押下したときにView1_ViewModel、View1_Modelまでは行くものの、UserControlへのプロパティの変更通知は、どうやってModelから送るべきなのでしょうか。

また、設計思想として、それぞれ遂になるように考えてきましたが、今回のような場合、Modelは一つという事を考慮しても良いのでしょうか。

◆考えている構成

View1 - View1_ViewModel - View1_Model
------------------------------------------- ↑ ↓
UserControl - UserControl_ViewModel - UserControl_Model

自分のMVVMの理解があってるかも、かなり不安です。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

考え方はあってます。
MVVMにModel間通信の定義はありませんから一般的な方法はありません。

PrismをはじめとしたMVVMインフラは大概その機能を持ってますので、それを使ってもいいです。
View1_Model と UserControl_Model が共に参照をもつ もう一つのModelを作ってもいいです。
DBなどを使っても良いです。

投稿2019/02/28 03:15

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Base

2019/03/01 01:32

ありがとうございます。 なるほど。一般的なものはないという事は、皆さま、どういう風に選択されているのでしょうか。 コーディングがやり易い・簡単などの特性があるのでしょうか。 例えば、Modelクラスにて、INotifyPropertyChangedを継承して、Viewに飛ばすことを考えた場合、Model - Viewの流れになってしまうような気がしていて、しっくりこないでいます。 Model -> ViewModel -> Viewの処理の流れで変更をかける事は、どうやって進めれば良いのでしょうか?
hihijiji

2019/03/01 02:34

ViewがBindするのはViewModelのプロパティだけである原則を崩さなければ、 INotifyPropertyChangedの実装がModelにあってもかまいません。 ViewModelにてModelのインスタンスをプロパティとして公開することはMVVMの原則から何も外れません。 Viewからみたら、ReactivePropertyを使った時の[Property名].Valueのように、単に公開されている公開名にドットが入っているだけです。
hihijiji

2019/03/01 07:48

> どういう風に選択されているのでしょうか 10通りぐらいやり方を思い浮かべて、その中で一番よさそうなものを選びます。大概はシンプルイズベストです。
Base

2019/03/03 00:52

ありがとうございます。 自分の理解が大枠、良さそうなこと、確認できてよかったです。 お手数をおかけし大変恐縮ですが、もし可能であれば、シンプルな、、何か参考になるようなページがあれば、教えていただけると幸いです。
hihijiji

2019/03/03 01:41

万人におすすめ出来るページはありませんし、良いページを探す時点で方向性が違います。 まずMVVMで検索してヒットするページを片っ端から読み漁ってください。 理解する必要も覚える必要もないので、一通り目を通して頭の片隅に追いやる感じで とにかく数を優先してください。 あとは習うより慣れろで、「Prism Template Pack」を使ってプロジェクトを作ったり、 サンプル検索して動かしてみたりする。 わからない事があったら、検索して調べる。 その繰り返しです。
Base

2019/03/03 09:54

ありがとうございます。 やってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問