Поскольку я продолжаю адаптироваться к новому миру wpf и mvvm, я нахожусь с другой проблемой, которая оказывается немного досадной.Передача параметров из одной модели представления в другую в wpf
В формах окон, если мне нужна новая форма для принятия параметра, я просто передал информацию, необходимую мне для конструктора этой формы. Так как Winforms по существу является кодовым образцом модели, это не проблема.
Теперь я нахожусь с MainWindow (контролируется MainWindowViewModel) и Login (контролируется LoginViewModel), который сначала отображается как диалог. Я отсортировал проблему с отсутствующим результатом диалога, и я могу открыть главное окно после закрытия диалогового окна входа.
Диалоговое окно входа в систему отображается в ответ на ввод в приложение при помощи следующего кода;
dim dlg As New Login
If dlg.ShowDialog() = True Then
Else
Current.Shutdown(0)
End If
и я использую использовать следующие в коде позади окна входа в систему, чтобы заботиться показывать главное окно, когда диалог закрывается Логин;
Public Sub New
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Application.Current.ShutdownMode =ShutdownMode.OnExplicitShutdown
End Sub
Protected Overrides Sub OnClosed(e As EventArgs)
MyBase.OnClosed(e)
Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose
End Sub
Теперь MainWindow уже знает, что это DataContext является MainWindoViewModel, потому что я установил, что, когда проектирование его смеси, так как я прохожу все параметры, которые я хочу, чтобы перейти от LoginViewModel к MainWindowViewModel?
Я могу читать C#, но, если возможно, предпочтут vb. Я знаю, что это то, что я хочу делать часто, поэтому, если есть общий способ сделать это, тогда я так хочу.
Благодарности
Обычно вы используете какую-то систему обмена сообщениями для передачи данных между несвязанными ViewModels, однако в вашей ситуации с Login и Main ViewModels я бы не создавал MainViewModel до тех пор, пока Login Login не будет успешным, и я передам его необходимые ему данные в конструкторе. У меня есть пример [здесь] (http://stackoverflow.com/a/12861797/302677), если вам интересно. – Rachel