我正在处理的软件有一个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
,但问题是当我单击Show bar按钮中的一个按钮来操作它的任务时,我丢失了所有变量的值,这些值在MainWindowViewModel
之前被实例化和传输!
我在哪里弄错了?
-------更新
当我想将第一个ViewModel的实例作为第二个ViewModel的构造函数的参数发送时,它具有相同的行为(Making null)。
问题是在Xaml中我设置了ViewModel的一个实例。即使我在构造函数中设置参数,但第二个ViewModel错误地使用了在Xaml中创建的那个。
<Window.Resources>
<ViewModels:WndSummariesViewModel x:Key="WndSummariesVM"/>
<viewModels:ProViewModel x:Key="ProViewModel" />
</Window.Resources>