我正在尝试实现在我的Xamarin MVVM项目中切换不同页面的功能。我有三个文件夹 - “模型”,“视图”和“ViewModels”。 “视图”包含“MainView”,其作用是显示其他视图。
MainView.xaml:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="KeepFit.Views.MainView">
<ContentPresenter x:Name="ContentArea" Content="{Binding CurrentView}"/>
</ContentPage>
MainView.xaml.cs:
public partial class MainView : ContentPage
{
public MainView()
{
InitializeComponent();
BindingContext = new MainViewModel();
}
}
如您所见,“MainView”绑定到“MainViewModel”类。
MainViewModel.cs:
public class MainViewModel : INotifyPropertyChanged
{
public Command SwitchViewsCommand { get; private set; }
public MainViewModel()
{
SwitchViewsCommand = new Command((parameter) =>
CurrentView = (ContentPage)Activator.CreateInstance(parameter as Type));
CurrentView = new HomeView();
}
private ContentPage _currentView;
public ContentPage CurrentView
{
get
{
return _currentView;
}
set
{
if (value != _currentView)
{
_currentView = value;
OnPropertyChanged("CurrentView");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName]
string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
在构造函数中将CurrentView设置为我的HomeView(假设它是默认的ContentPage)。它绑定到ContentPresenter,因此它应该在我的应用程序的运行时开始时可见。但事实并非如此。
我注意到ContentPresenter期望将Xamarin.Forms.View对象作为“内容” - 我的视图继承自Xamarin.Forms.ContentPage。但是,如果我将它们更改为ContentViews - 我将无法为它们设置BindingContext。有人可以解释我做错了什么吗?
答案 0 :(得分:0)
你试试这个吗?
async void butonClick(object sender, EventArgs e)
{
await Navigation.PushAsync(new EntryPageCode());
}
您在“EntryPageCode”位置的视图实例,好的。 尝试这个并告诉我,如果你的工作没事的话。