ViewModel中的属性未显示在View中
||
我有一个称为MainWindowViewModel的ViewModel。在此,我有一个属性,当发生错误时,该属性显示模式窗口。只要在启动过程中发生错误,此方法就可以正常工作。
在启动后发生错误时,在SubViewModel中,我将在MainWindowViewModel中调用参数化的构造函数。
MainWindowViewModel.cs
public MainWindowViewModel()
{
if (!isServerRunning)
{
this.ModalWindow = new LogViewModel(\"Server is down.\");
}
else
{
this.ModalWindow = new LogViewModel();
}
}
public MainWindowViewModel(string logMessage)
{
this.ModalWindow = new LogViewModel(logMessage);
}
public LogViewModel ModalWindow
{
get
{
return _modalWindow;
}
set
{
_modalWindow = value;
OnPropertyChanged(\"ModalWindow\");
}
}
MainWindow.xaml
....
<Grid>
<vw:LogView Content=\"{Binding Path=ModalWindow}\"/>
</Grid>
MainWindowViewModel绑定到MainWindow.xaml
SubViewModel绑定到SubView.xaml
MainWindow.xaml加载多个视图,其中之一是SubView。
在App.xaml中,我创建了ViewModel的实例并将其绑定到MainWindow。
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MainWindow mainWindow = new MainWindow();
MainWindowViewModel viewModel = new MainWindowViewModel();
mainWindow.DataContext = viewModel;
mainWindow.Show();
}
我意识到的是,如果我在SubViewModel中创建模式窗口属性并将其绑定到SubView,则在启动后发生错误时将显示模式窗口。但这不是可以的,因为SubView只是一个覆盖MainWindow 1/4的DockPanel。即1/4仅用一个模式窗口而不是整个MainWindow覆盖。
我不确定为什么当我从SubViewModel调用参数化的构造函数时,模式窗口不会出现在MainWindow中。当我调试时,我看到部分“ 3”具有正确的值,但是无论如何都不会出现模态窗口。
我将ViewModel绑定到MainWindow的Datacontext。这可能就是为什么在启动时发生错误时我看到“模态”窗口的原因。对于启动后的错误:我是否必须(从SubViewModel调用MainWindowViewModel中的参数化构造函数)再次对Mainwindow的数据上下文进行某种绑定?无需创建MainWindow的新实例的最佳方法是什么?因为MainWindow只能创建一次。
任何帮助深表感谢。
没有找到相关结果
已邀请:
2 个回复
膛嵌墒缅欠
蜗仓馈
ViewModel:
只需从任何viewmodel调用上述方法(ShowMessageBox)即可显示一个对话框。