Xamarin.Forms 你能用按钮打开标签页吗?
Xamarin.Forms Can you open a tab with a button?
我是 Xamarin.Forms 的新手,正在为我的应用程序制作一个主页菜单,该菜单已经有用于不同页面的选项卡。
为了向应用程序的新用户展示,我希望在主页上有大按钮,这些按钮也可以转到其中一些特定的选项卡。此示例当前显示我尝试打开 'About' 标签页。
当前代码将尝试从 ICommand 推送“关于”页面的模式(这实际上打开了一个白屏而不是加载实际页面。我还不知道为什么。),但我想它改为打开选项卡。这在 Xamarin.Forms 中可行吗?
public class HomePageViewModel : BaseViewModel
{
public HomePageViewModel()
{
Title = "Home Page";
OpenAboutCommand = new Command(async () => await Application.Current.MainPage.Navigation.PushModalAsync(new AboutViewModel()));
}
public ICommand OpenAboutCommand { get; }
}
您可以试试下面的代码。
Xaml:
<Button Command="{Binding OpenAboutCommand}"></Button>
代码隐藏:TabbedPage3 是我的标签页。 1 是 tabbedpage3 的选项卡的索引。请注意,索引不能超过标签。
public partial class Page5 : ContentPage
{
public Page5()
{
InitializeComponent();
this.BindingContext = new Page5ViewModel();
}
}
public class Page5ViewModel
{
public ICommand OpenAboutCommand { get; set; }
public Page5ViewModel()
{
OpenAboutCommand = new Command(() =>
{
var tab = new TabbedPage3();
tab.CurrentPage = tab.Children[1];
Application.Current.MainPage.Navigation.PushModalAsync(tab);
});
}
}
事实证明,已经有一种方法 Xamarin.Forms 提到,一旦您将其添加为 AppShell.xaml 中的路由,它就会执行此操作。
这是 AppShell.Xaml 的 XAML。注意 Route="AboutPage"
.
<ShellContent Route="AboutPage" x:Name="aboutPage" Title="About" Icon="icon_about.png" ContentTemplate="{DataTemplate local:AboutPage}" />
现在是 cs 代码。 (每个人都喜欢一个好的班轮。)
public class HomePageViewModel : BaseViewModel
{
public HomePageViewModel()
{
Title = "Home Page";
OpenAboutCommand = new Command(() => { Shell.Current.GoToAsync("//AboutPage");});
}
public ICommand OpenAboutCommand { get; }
}
我是 Xamarin.Forms 的新手,正在为我的应用程序制作一个主页菜单,该菜单已经有用于不同页面的选项卡。
为了向应用程序的新用户展示,我希望在主页上有大按钮,这些按钮也可以转到其中一些特定的选项卡。此示例当前显示我尝试打开 'About' 标签页。
当前代码将尝试从 ICommand 推送“关于”页面的模式(这实际上打开了一个白屏而不是加载实际页面。我还不知道为什么。),但我想它改为打开选项卡。这在 Xamarin.Forms 中可行吗?
public class HomePageViewModel : BaseViewModel
{
public HomePageViewModel()
{
Title = "Home Page";
OpenAboutCommand = new Command(async () => await Application.Current.MainPage.Navigation.PushModalAsync(new AboutViewModel()));
}
public ICommand OpenAboutCommand { get; }
}
您可以试试下面的代码。
Xaml:
<Button Command="{Binding OpenAboutCommand}"></Button>
代码隐藏:TabbedPage3 是我的标签页。 1 是 tabbedpage3 的选项卡的索引。请注意,索引不能超过标签。
public partial class Page5 : ContentPage
{
public Page5()
{
InitializeComponent();
this.BindingContext = new Page5ViewModel();
}
}
public class Page5ViewModel
{
public ICommand OpenAboutCommand { get; set; }
public Page5ViewModel()
{
OpenAboutCommand = new Command(() =>
{
var tab = new TabbedPage3();
tab.CurrentPage = tab.Children[1];
Application.Current.MainPage.Navigation.PushModalAsync(tab);
});
}
}
事实证明,已经有一种方法 Xamarin.Forms 提到,一旦您将其添加为 AppShell.xaml 中的路由,它就会执行此操作。
这是 AppShell.Xaml 的 XAML。注意 Route="AboutPage"
.
<ShellContent Route="AboutPage" x:Name="aboutPage" Title="About" Icon="icon_about.png" ContentTemplate="{DataTemplate local:AboutPage}" />
现在是 cs 代码。 (每个人都喜欢一个好的班轮。)
public class HomePageViewModel : BaseViewModel
{
public HomePageViewModel()
{
Title = "Home Page";
OpenAboutCommand = new Command(() => { Shell.Current.GoToAsync("//AboutPage");});
}
public ICommand OpenAboutCommand { get; }
}