概要
UserControlで作成した画面(孫)を複数表示している画面(子)をUserControlで作成しました。
この(子)をWindowの画面(親)で表示したいです。
詳細
お世話になっております。WPF勉強中の者です。
(孫)はView,ViewModel,Modelが別々に存在していて数が固定です。
(子)もView,ViewModel,Modelが別々に存在していますが数は動的に変動します。
(親)は1つのView,ViewModel,Modelが存在しております。
(親)の画面操作によって、(子)のプロパティを変更させたり
(孫)のプロパティをリアルタイムで変動させるようにしたいのですが
MVVM的にどう作成すればよいか分かりません。
(孫)や(子)から(親)のプロパティを見ることはありませんので
(親)のModelに(孫)や(子)の実態を持つイメージなのですが
その際、ViewModelとどう連結すればよいのか分からなくなってしまいました。
(プロパティの変更通知はイベントで行う?)
各ViewModel、Modelの実態をどこに持てばいいのか?
VewModel,Modelの繋がりをどうすればよいのか?
拙い文章かつ上手くまとまっておらず申し訳ありませんが、何かアドバイス等頂けると幸いです。
また、その他何か必要な情報等ありましたらお教えください。
試したこと
(親)ViewModelにObservableCollectionで(子)ViewModelの実態を持ち
ItemsControlでViewを表示する
<ItemsControl ItemsSource="{Binding ChildViewModel}"> <ItemsControl.ItemTemplate> <DataTemplate> <child:ChildCollectionView DataContext="{Binding}"/> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl>
(子)のViewModelは以下のように作成しています
public class ChildViewModel : BaseViewModel { // Modelクラス public ChildData Data { get { return _data; } set { SetProperty(ref _data, value); } } private ChildData _data; } public class ChildCollectionViewModel : BaseViewModel { public ObservableCollection<ChildViewModel> ViewModels { get { return _viewModels; } set { SetProperty(ref _viewModels, value); } } private ObservableCollection<ChildViewModel> _viewModels = new ObservableCollection<ChildViewModel>(); public ChildCollectionViewModel() { // 仮に3回 for (int i = 0; i < 3; i++) { var viewModel = new ChildViewModel(); ViewModels.Add(viewModel); } } }
(子)-(孫)も同じように設定していますが(親)画面には何も表示されません。
補足情報(FW/ツールのバージョンなど)
Windows10
visual studio 2015
C#
.net 4.6.1
prism 5.0
回答2件
あなたの回答
tips
プレビュー