Значения переменных становятся нулевыми после нажатия на второе окно, открытое из модели вида первого окна - PullRequest
0 голосов
/ 26 апреля 2019

Программное обеспечение, над которым я работаю, имеет Mainwindow, в котором есть несколько кнопок, открывающих новые окна. Каждый из них должен иметь ViewModel.

В MainWindowViewModel программа создает некоторые данные, например, ProList и summariesData. Одной из кнопок в главном окне, которое открывает новое окно, является кнопка «Показать панели». В MainWindowViewModel я подключил кнопку Показать бары с ICommand к методу, который создает новое окно. Для открытия нового окна я использую кнопки Show Bar с выделенным кодом.

Dim wndSummariesObject = New WndSummaries
wndSummariesObject.Show()

В том же методе я создаю экземпляр ShowbarsViewModel для передачи данных, с которыми он должен работать.

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

Это показывает, что конструктор передает данные в ShowBarsViewModel, но проблема в том, что когда я нажимаю одну из кнопок на кнопке Показать панель для выполнения своей задачи, я теряю все значения переменных, которые были созданы и переданный ранее из MainWindowViewModel!

Где я совершаю ошибку?

------- Обновление

Он имеет такое же поведение (Делает ноль), когда я хочу отправить экземпляр первой ViewModel в качестве параметра конструктора второй ViewModel.

1 Ответ

0 голосов
/ 27 апреля 2019

Проблема заключалась в том, что в Xaml я устанавливал экземпляр ViewModels. Хотя я устанавливал параметры в конструкторе, но вторая ViewModel по ошибке использовала тот, который был создан в Xaml.

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