Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как передавать класс окна в MVVM???

Avataria 2 Ученик (36), открыт 1 неделю назад
Допустим во ViewModel есть метод который открывает окно ShowWindow<T>();
Как передать туда название окна, ведь ViewModel нельзя давать ссылку на View...
Есть Zoo.xaml вот как его передать во ViewModel, если нельзя давать ссылку на View. Сервис для управления окнами есть и метод открытия окна оттуда.
1 ответ
Павел Быков Ученик (98) 1 неделю назад
Попробуйте через реализацию интерфейса. Определите интерфейс, который содержит методы, необходимые для управления окном, и реализуйте этот интерфейс в классе окна. Затем передайте экземпляр этого интерфейса в ViewModel.
public interface IWindowService
{
void CloseWindow();
void ShowWindow();
// Другие методы, если необходимо
}

public class MainWindow : Window, IWindowService
{
// Реализация методов интерфейса
}

public class MainViewModel
{
private readonly IWindowService _windowService;

public MainViewModel(IWindowService windowService)
{
_windowService = windowService;
}

public void CloseApplication()
{
_windowService.CloseWindow();
}
}
Avataria 2Ученик (36) 1 неделю назад
обязательно это прописывать в окно.xaml чисто на стороне ViewModel это сделать нельзя?
Павел Быков Ученик (98) Avataria 2, Такое не знаю, если честно
Похожие вопросы