Xamarin Forms打开一个没有导航的视图

时间:2016-12-22 15:16:08

标签: xamarin xamarin.forms

Xamarin表单导航示例我看到利用NavigationPage ...

public App()
{
    InitializeComponent();

    MainPage = new NavigationPage(new HyperTrack2.Login());
}

然后当事件发生时移动到下一页......

async void OnLogin(object sender, EventArgs e)
{
    await Navigation.PushAsync(new MapPage());
}

如何在不使用NavigationPage的情况下显示视图?

1 个答案:

答案 0 :(得分:1)

取决于您认为的观点。

您在问题中列出的流程是使用Xamarin页面进行导航的首选方式。 Xamarin页面包含一个或多个控件或视图。通常在根处有一些布局视图,然后根据需要分支出来。

内置导航机制实际上利用最佳本机技术在应用程序内部导航,并允许您使用标准手势和按钮进行导航,显示标准工具栏和标题视图等。

我完全建议除非您有非常具体的需求,否则继续使用内置的导航机制。

否则,您通过xamarin.forms页面移动的另一个选项是设置Application类的MainPage属性(默认情况下称为App) 您可以通过Application.Current.MainPage = new MyPage();或者如果在app类中编写代码,直接通过调用MainPage = new MyPage();

最后,您特别提到了视图,而不是页面。如果你在讨论页面中的单个控件,你可以将它的IsVisible属性绑定到ViewModel中的某个值,或者你可以给它一个x:Name =“myControl”(如果使用XAML)或存储对它的引用(如果在后面的代码中创建UI),然后在代码后面的某个地方执行myControl.IsVisible = true / false。这会切换单个控件的可见性,然后该控件将成为页面层次结构的一部分。

如果您希望将视图显示为现有页面上的“弹出窗口”,而不实际成为页面的一部分,则可以使用一些内置的简单UI元素,例如操作表和显示警报。这些提供简单的弹出窗口,提供一些操作或显示消息。 对于更复杂的UI,请查看Nuget插件包,或者如果您愿意,可以通过在所需的所有目标平台上实现功能来编写自己的。

我建议查看Acr User对话框,因为它是一个非常好用的插件。它有一组你可以使用的更广泛的UI元素,但它仍然不允许你定义你想要的任何元素并在弹出窗口中显示它,为此,搜索Xamarin.Forms的弹出插件。有很多,但没有一个完美地工作。