Наш дизайнер создал макет нечто похожее на экране выше. Основная идея заключалась в том, чтобы создать приложение только с одним экраном, только красная часть экрана изменяется (т. Е. 2 текстовых поля вместо 1 текстового поля), когда вы нажимаете на кнопку. Это приложение будет мультиплатформенным приложением, и я использую MvvmCross для его создания. Мой вопрос в том, как я могу добиться такого поведения в Mvvm? Моя первая мысль была sg. как и код ниже, но я не удовлетворен этим решением. У вас есть лучшее решение этой проблемы? Должен ли я каким-то образом перезаписать навигацию по умолчанию на ShowViewModel()?
public class MainViewModel : MvxViewModel
{
private MvxViewModel _currentViewModel;
public MvxViewModel CurrentViewModel
{
get { return _currentViewModel; }
set { _currentViewModel = value; RaisePropertyChanged(() => CurrentViewModel); }
}
public MainViewModel()
{
CurrentViewModel = new DefaultViewModel();
}
public void OnButtonClick()
{
CurrentViewModel = new SecondViewModel();
}
}
public partial class MainViewModel : MvxViewController
{
public override void ViewDidLoad()
{
base.ViewDidLoad();
FirstViewModel.WeakSubscribe(ViewModelPropertyChanged);
}
private void ViewModelPropertyChanged(object sender, PropertyChangedEventArgs args)
{
if (args.PropertyName == "CurrentViewModel")
{
if (Model.CurrentViewModel != null)
{
if (Model.CurrentViewModel is SecondViewModel)
{
//remove bindings
//change View
//bind new viewmodel
}
}
}
}