デザイナーが上の画面のようなレイアウトを作成しました。主なアイデアは、ボタンをタップすると、画面の赤い部分 (つまり、1 つのテキスト ボックスではなく 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
}
}
}
}