ViewModel間で通信する方法を理解する必要があります。私はMVVMを初めて使用するので、親切にしてください。
これはばかげた例です
クラス定義(ParentViewModelでChild.PropertyChangedイベントをフックしたと仮定します):
public class ParentViewModel : ViewModelBase
{
public ChildViewModel Child { get; set; }
}
public class ChildViewModel : ViewModelBase
{
String _FirstName;
public String FirstName
{
get { return _FirstName; }
set
{
_FirstName = value;
OnPropertyChanged("FirstName");
}
}
}
これがリソース辞書に表示されるものです
<DataTemplate DataType="{x:Type vm:ParentViewModel}">
<vw:ParentView/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ChildViewModel}">
<vw:ChildView/>
</DataTemplate>
およびChildViewのコードビハインド:
public partial class ChildView : UserControl
{
public QueueView()
{
InitializeComponent();
DataContext = new ChildViewModel();
}
}
明らかな問題は、ChildViewが(DataTemplateからの選択を介して)インスタンス化されると、新しいChildViewModelクラスが作成され、ParentViewModelがそれにアクセスできないことです。
では、ビューのDataContextを、DataTemplateが選択される原因となった元のViewModelにインスタンス化するにはどうすればよいですか?
明らかな修正は、ChildViewModelのプロパティをParentViewModelにマージすることですが、再利用するために分離したいと思います。
答えは些細なことだと確信しています。それが何であるかを知りたいだけです。:)
前もって感謝します。