【问题标题】:How do i get a button to navigate to another page我如何获得一个按钮来导航到另一个页面
【发布时间】:2021-10-26 19:46:49
【问题描述】:

这是 MainViewModel.cs :

 public MainViewModel()
            {
                Products = new ObservableRangeCollection<ProductViewModel>()
                {
                    new ProductViewModel()
                    {
                        HeroColor = "#95C9F7",
                        Name="Manager",
                        ImageUrl = "QRM",
                        IsFeatured = true,
                        Description = "Contained in a glass polygonal florarium",
                    },
                    new ProductViewModel()
                    {
                        HeroColor = "#FFCA81",
                        Name="Yellow Sun",
                        ImageUrl = "yellow_moss",
                        IsFeatured = true,
                        Description = "Contained in a yellow glass polygonal florarium",

问题是我想要每个(新的 ProductViewsModel)按钮让我转到另一个页面

-我尝试对主页执行此操作,但此按钮转到每个新 ProductViewsModel 的同一页面:

  <Grid Grid.Row="2">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
            </Grid>
            <Button x:Name="ClickButton" BackgroundColor="#FB9B63" CornerRadius="10" HeightRequest="60" FontSize="20" HorizontalOptions="Center"
                    Text="Entrer" TextColor="White" VerticalOptions="Center" Clicked="AddToCartButton_Clicked" />

(MainPage.xaml.cs)中的按钮代码:

private void AddToCartButton_Clicked(object sender, EventArgs e)
{

}

【问题讨论】:

  • 我需要你的帮助
  • AddToCartButton_Clicked 的代码在哪里?
  • @Jason ser 我有一个空代码,因为我不知道我在里面做什么
  • 这是在 ListView 内部吗?每个按钮是否应该使用不同的 VM 转到同一页面,或者不同的页面,还是什么?页面的名称是什么?这里有很多缺失的信息。
  • @Jason 先生,我想要的所有东西都是针对每个新的 ProductViewModel() 一个按钮让我转到页面,例如名称为 Manager 的新 ProductViewModel() 我想转到页面管理器和新的 ProductViewModel () 其名称是 Yellow Sun 我想转到 YellowSun 页面。 xml

标签: visual-studio xamarin xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

你可以这样做

private void AddToCartButton_Clicked(object sender, EventArgs e)
{
    var btn = (Button)sender;
    var item = (ProductViewModel)btn.BindingContext;

    ContentPage page = null;

    switch(item.Name)
    {
       case "Manager":
         page = new ManagerPage();
         break;
       ...
    }

    Navigation.PushAsync(page);
    
}

【讨论】:

  • 先生,我正在主页中使用内容视图。我做了你为我创造的一切,但我有一个问题,我会发布一张图片来查看,非常感谢
  • 在 Navigation.PushAsync(page);显示使用未分配的局部变量“页面”
  • 查看我的编辑。这是一个基本的 C# 错误 - 您是否花时间搜索错误消息?
  • 你给page分配了什么?它是从 ContentPage 派生的类型吗?
  • 它现在可以工作了,先生 @Jason 但我有这个异常 ` System.InvalidCastException: 'Specified cast is not valid.'
猜你喜欢
  • 2010-10-08
  • 2021-08-19
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
相关资源
最近更新 更多