- У меня есть базовая всплывающая страница, в которой есть всплывающее окно с кнопками меню и главной страницей в качестве подробной информации.
Код: Выделить всё
- Кнопки в FlyoutPage.Flyout запускают команду
Код: Выделить всё
- Команда запускает метод в ViewModel:
Код: Выделить всё
public class ViewModelCommands : ViewModel
{
public ViewModelCommands() : base() { }
public ICommand NavigateToPageCommand { get; private set; }
public override void Init()
{
base.Init();
NavigateToPageCommand = new Command((page) => NavigateToPage((string)page), (page) => true);
}
}
Вопрос
Все приведенные выше привязки работают должным образом. Вопрос в том, как мне изменить FlyoutPage.Detail... Возможно ли это с помощью описанного выше подхода или нужно сделать по-другому?
Сама виртуальная машина не может знать о Details в Model, поэтому он не может обновить/заменить ее напрямую.
Метод (4) может обновить какое-либо свойство, связанное с xaml/code-behind, но я понятия не имею, как (и если это вообще возможно) возможно) для привязки:
Код: Выделить всё
Нажатый метод будет находиться в FlyoutPage.Flyout(2), и ему придется каким-то образом обновлять Details в FlyoutPage (1), поэтому это не кажется очень привлекательным. Кроме того, мне хотелось бы держаться подальше от кода программной части.
Я бы хотел сделать это в соответствии с MVVM, но буду рад любому работающему решению.
Сводка
- Мне нужно изменить FlyoutPage.Detail при нажатии кнопки
< li>было бы лучше использовать команды и, если возможно, придерживаться строго MVVM - Мне было интересно связать его каким-то образом в xaml или коде программной части
- возможно, какое-то прямое изменение кода программной части, но это потребует изменения свойства одной страницы со второй страницы.
- возможно, будет способ каким-то образом вернуть правильную страницу из команды и затем заменить ее
li>
Подробнее здесь: https://stackoverflow.com/questions/791 ... -viewmodel
Мобильная версия