Я отправил этот код на ваш предыдущий вопрос.Когда вы устанавливаете
public ViewModel1 ViewModel1 { get; set; } = new ViewModel1();
Тогда это будет игнорировать ninject.Вы только что создали новый класс.
Когда я читаю ваш вопрос, пример кода, который я разместил, похоже, делает то, с чем у вас проблемы.Я говорю это, когда я прошу IVMOne, тогда это должно дать мне новый экземпляр VMOne.У вас, похоже, нет эквивалентного кода.
private void Application_Startup(object sender, StartupEventArgs e)
{
var nj = new StandardKernel();
nj.Bind<IVMOne>().To<VMOne>().InTransientScope(); // <<<<<<<<<<<<<<<
MainWindow mw = new MainWindow();
mw.DataContext = nj.Get<MainWindowViewModel>();
mw.Show();
}
Видите, где я связываю IVMOne?Это эквивалентно вашим Viewmodel1 и 2. У вас этого нет в вашем коде.
Когда я получаю MainWindowViewModel с IVMOne в качестве параметра ctor.
class MainWindowViewModel
{
public IVMOne VMOne { get; set; }
public MainWindowViewModel(IVMOne vmOne)
{
VMOne = vmOne;
}
}
Потому что я сказал эточто дать мне, он передает экземпляр VMOne.
Я вижу, что текст появляется в моем текстовом блоке, когда я раскручиваю это.
Title="MainWindow" Height="450" Width="800">
<Grid>
<TextBlock Text="{Binding VMOne.Hello}"/>
</Grid>
Если я ставлю точку останова на mainwindowviewmodelctor У меня там есть экземпляр vmone.
Не могли бы вы попробовать связать одну из ваших моделей представления перед получением mainwindowviewmodel?
Когда вы получаете mainwindowviewmodel, он будет использовать ctor с большинством параметров.Поставьте точку останова в этом.У вас есть экземпляр вашей модели представления там?
Если нет, тогда соедините другой sln.Не то, что у вас есть сейчас.Потому что это будет сложно и, вероятно, будет иметь внешние зависимости.Добавьте к этому абсолютную минимальную разметку и код, который демонстрирует вашу проблему без каких-либо внешних зависимостей.
Так кто-то может легко и быстро воспроизвести вашу проблему.