我正在使用的软件有一个Mainwindow
,其中有几个按钮可以打开新窗口。每个都应有一个ViewModel
。
软件在MainWindowViewModel
中创建一些数据,例如ProList
和summariesData
。打开新窗口的主窗口中的按钮之一是“显示栏”按钮。在MainWindowViewModel
中,我已经将显示栏按钮和ICommand
连接到了一个实例化新窗口的方法。我使用代码隐藏的“显示栏”按钮打开新窗口。
Dim wndSummariesObject = New WndSummaries
wndSummariesObject.Show()
在同一方法中,我实例化了ShowbarsViewModel
来传递需要使用的数据。
WndSummariesViewModelObject = new WndSummariesViewModel(_ProfileList,
SummariesWndData) With {
.ProfileList = ProList,
.SummariesWndData = SummariesData
}
它表明构造函数将数据传输到ShowBarsViewModel
中,但是问题是,当我单击“显示栏”按钮中的一个按钮来执行其任务时,我丢失了所有已从MainWindowViewModel
实例化并转移!
我在哪里犯错?
-------更新
当我要发送第一个ViewModel的实例作为第二个ViewModel的构造函数的参数时,它具有相同的行为(使null)。
答案 0 :(得分:0)
问题是我在Xaml中设置了ViewModels的实例。即使我在构造函数中设置参数,但第二个ViewModel却错误地使用了Xaml中创建的参数。
<Window.Resources>
<ViewModels:WndSummariesViewModel x:Key="WndSummariesVM"/>
<viewModels:ProViewModel x:Key="ProViewModel" />
</Window.Resources>