У меня уже кто-то помогал с этим раньше, но теперь, когда я переписываю все в MVVM, я потерял способность сделать это ... Опять же!Как ссылаться на страницу (просмотр) для модели просмотра?
Pre-MVVM переписывают, у меня был эта строка коды в коде моей страницы:
var window = MahApps.Metro.Controls.TreeHelper.TryFindParent<MetroWindow>(this);
прямо в конце концов, «это» означал страницу. Теперь этот код сидит в моей модели просмотра с красноватой красной линией, и я не знаю, что заменить. Я не думаю, что могу поставить:
SideBar sb = new SideBar();
var window = MahApps.Metro.Controls.TreeHelper.TryFindParent<MetroWindow>(sb);
потому что это создаст новый экземпляр боковой панели ... не так ли? Эта страница загружается как источник по умолчанию для фрейма на главной странице btw, а не инициируется с помощью кода.
Никогда не пытайтесь переписать код следующим образом 1: 1 ... Ваша модель просмотра не должна вызывать какой-либо метод, как это вообще! Переосмыслите свой подход, потому что MVVM не «берет мой код из кода и помещает его в отдельный класс». – walther
Для этого я этого не делал ... Но я совершенно не знаком с тем, что происходит в этой строке ... и я хочу добиться такого же эффекта. Знаете ли вы, что я мог бы сделать вместо этого? – pingu2k4
Ну, очевидно, он пытается найти родителя объекта, в данном случае родителя страницы, который будет Window ... Не уверен, как вы используете его в коде позже, но ваша ViewModel не должна знать ничего о Окне, ни о Стене. Вам нужно поставить эту логику в другом месте, если вам это даже понадобится ... – walther