Xamarin UWP + Android ContentPage 导航 PushAsync
Xamarin UWP + Android ContentPage Navigation PushAsync
我正在将 UWP 应用程序转换为 Xamarin,目的是在 Android 和 Windows 设备上使用它。
我以前从未使用过 Xamarin,我认为我犯了一个初学者错误。
在我的主页上一切正常:
但是当我点击“选项”按钮时,除了 window 上部的灰色横幅外,它没有加载新页面:
要从一页导航到另一页,我遵循了以下解释:Microsoft doc navigation
MainPage.xaml.cs 中有我的代码来更改页面:
async void ButtonOptions_Click(object sender, EventArgs args)
{
try
{
button_options.Source = "Assets/Option_Icon_1.png";
Application.Current.MainPage = new NavigationPage(new MainPage());
var OptionsView = new OptionsView();
await Device.InvokeOnMainThreadAsync(() => Navigation.PushAsync(OptionsView, true));
//this.Frame.Navigate(typeof(StorageView1));
}
catch (Exception ex) { InterpretException("MainPage.ButtonStorage_Click()", ex); }
}
还有我的 OptionsView.xaml :
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Stock_Manager_Xamarin.OptionsView"
Title="Second Page">
<ContentPage.Content>
<StackLayout HorizontalOptions="Center" VerticalOptions="Center">
<StackLayout Orientation="Horizontal">
<Label Text="Name:" HorizontalOptions="FillAndExpand" />
<Label Text="{Binding Name}" FontSize="Medium" FontAttributes="Bold" />
</StackLayout>
<Button x:Name="navigateButton" Text="Previous Page"/>
</StackLayout>
</ContentPage.Content>
我尝试了不同版本的 xaml 代码,但没有做任何更改,但我找不到可用的示例。
有人可以解释我哪里做错了吗?
将当前页面包裹在App.cs
的导航栈中,并设置为MainPage
,这样我们就可以进行导航操作了。
public App()
{
InitializeComponent();
MainPage = new NavigationPage(new MainPage());
}
如Jason
所述,无需再次设置MainPage
,直接导航即可,修改代码如下。
void ButtonOptions_Click(object sender, EventArgs args)
{
try
{
button_options.Source = "Assets/Option_Icon_1.png";
var OptionsView = new OptionsView();
Navigation.PushAsync(OptionsView, true);
}
catch (Exception ex) { InterpretException("MainPage.ButtonStorage_Click()", ex); }
}
我正在将 UWP 应用程序转换为 Xamarin,目的是在 Android 和 Windows 设备上使用它。 我以前从未使用过 Xamarin,我认为我犯了一个初学者错误。
在我的主页上一切正常:
但是当我点击“选项”按钮时,除了 window 上部的灰色横幅外,它没有加载新页面:
要从一页导航到另一页,我遵循了以下解释:Microsoft doc navigation
MainPage.xaml.cs 中有我的代码来更改页面:
async void ButtonOptions_Click(object sender, EventArgs args)
{
try
{
button_options.Source = "Assets/Option_Icon_1.png";
Application.Current.MainPage = new NavigationPage(new MainPage());
var OptionsView = new OptionsView();
await Device.InvokeOnMainThreadAsync(() => Navigation.PushAsync(OptionsView, true));
//this.Frame.Navigate(typeof(StorageView1));
}
catch (Exception ex) { InterpretException("MainPage.ButtonStorage_Click()", ex); }
}
还有我的 OptionsView.xaml :
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Stock_Manager_Xamarin.OptionsView"
Title="Second Page">
<ContentPage.Content>
<StackLayout HorizontalOptions="Center" VerticalOptions="Center">
<StackLayout Orientation="Horizontal">
<Label Text="Name:" HorizontalOptions="FillAndExpand" />
<Label Text="{Binding Name}" FontSize="Medium" FontAttributes="Bold" />
</StackLayout>
<Button x:Name="navigateButton" Text="Previous Page"/>
</StackLayout>
</ContentPage.Content>
我尝试了不同版本的 xaml 代码,但没有做任何更改,但我找不到可用的示例。 有人可以解释我哪里做错了吗?
将当前页面包裹在
App.cs
的导航栈中,并设置为MainPage
,这样我们就可以进行导航操作了。public App() { InitializeComponent(); MainPage = new NavigationPage(new MainPage()); }
如
Jason
所述,无需再次设置MainPage
,直接导航即可,修改代码如下。void ButtonOptions_Click(object sender, EventArgs args) { try { button_options.Source = "Assets/Option_Icon_1.png"; var OptionsView = new OptionsView(); Navigation.PushAsync(OptionsView, true); } catch (Exception ex) { InterpretException("MainPage.ButtonStorage_Click()", ex); } }