【发布时间】:2014-09-26 00:31:47
【问题描述】:
我一直遵循这种模式。 http://www.codeproject.com/Articles/36745/Showing-Dialogs-When-Using-the-MVVM-Pattern
但是,在此示例中,在 PersonDialog.xaml.cs 类中,我无法访问 this.DataContext。它始终为空。由于我正在使用 DialogService 打开一个窗口(我在其中将 DataContext 设置为 ViewModel 并将数据从 MainWindowViewModel 传递给 PersonDialogViewModel),因此我需要该 ViewModel 实例。我将无法从 View 创建另一个 PersonDialogViewModel。
请提出建议,因为我需要在后面的代码中从 ViewModel 访问数据。
这里是代码。
//MainWindowViewModel.cs
PersonViewModel selectedPerson = persons.Single(p => p.IsSelected);
PersonDialogViewModel personDialogViewModel = new PersonDialogViewModel(selectedPerson.Person);
dialogService.ShowDialog<PersonDialog>(this, personDialogViewModel);
//In PersonDialogViewModel.cs
public PersonDialog()
{
InitializeComponent();
var obj = this.DataContext;//DataContext is always null.
}
【问题讨论】:
-
您应该在这种情况下将视图分配给 PersonDialog 及其 viewModel。像 this.DataContext = new PersonDialogViewModel().
-
在 ctor 中,datacontext 为空,所以一切都很好。顺便说一句,我这样对话:stackoverflow.com/questions/3801681/…
标签: c# wpf mvvm modal-dialog