单击从第一个窗口的视图模型打开的第二个窗口后,变量值变为空

时间:2019-04-26 18:07:43

标签: wpf vb.net mvvm viewmodel

我正在使用的软件有一个Mainwindow,其中有几个按钮可以打开新窗口。每个都应有一个ViewModel

软件在MainWindowViewModel中创建一些数据,例如ProListsummariesData。打开新窗口的主窗口中的按钮之一是“显示栏”按钮。在MainWindowViewModel中,我已经将显示栏按钮和ICommand连接到了一个实例化新窗口的方法。我使用代码隐藏的“显示栏”按钮打开新窗口。

Dim wndSummariesObject = New WndSummaries
wndSummariesObject.Show()

在同一方法中,我实例化了ShowbarsViewModel来传递需要使用的数据。

WndSummariesViewModelObject = new WndSummariesViewModel(_ProfileList, 
    SummariesWndData) With {
        .ProfileList = ProList,
        .SummariesWndData = SummariesData
    }

它表明构造函数将数据传输到ShowBarsViewModel中,但是问题是,当我单击“显示栏”按钮中的一个按钮来执行其任务时,我丢失了所有已从MainWindowViewModel实例化并转移!

我在哪里犯错?

-------更新

当我要发送第一个ViewModel的实例作为第二个ViewModel的构造函数的参数时,它具有相同的行为(使null)。

1 个答案:

答案 0 :(得分:0)

问题是我在Xaml中设置了ViewModels的实例。即使我在构造函数中设置参数,但第二个ViewModel却错误地使用了Xaml中创建的参数。

<Window.Resources>
     <ViewModels:WndSummariesViewModel x:Key="WndSummariesVM"/>
     <viewModels:ProViewModel x:Key="ProViewModel" />
</Window.Resources>