Я использую WPF MVVM с. NET Core 3.1.
Теперь для установки MainWindow
'DataContext
Я использую следующий xaml
<Window.DataContext>
<local:MainViewModel/>
</Window.DataContext>
Это полностью работает для меня.
Но иногда я получаю предупреждения в комментариях StackOverflow под моим кодом, что я делаю это неправильно, почти ломая MVVM . Msgstr "Потому что View не должен вызывать конструктор ViewModel". (Почему?)
Я пытался установить его в конструкторе MainWindow
public MainWindow()
{
InitializeComponent();
DataContext = new MainViewModel();
}
И в Onstartup()
, как предложено здесь
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MainWindow window = new MainWindow();
window.DataContext = new MainViewModel();
window.Show();
}
Но два вышеупомянутых решения не позволяют предложениям IntelliSense работать в xaml.
Затем я нашел некоторую информацию о времени разработки и попробовал ее как дополнение к вышеуказанным решениям
<d:Window.DataContext>
<local:MainViewModel/>
</d:Window.DataContext>
Конструктор появился в связи со свойствами ViewModel, но это не повлияло на предложения IntelliSense. Мне нужны предложения, потому что это защищает меня от опечаток и делает меня быстрее.
Что я пропустил?