You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms 2.5导航问题:升级后重写项目遇页面创建异常

我明白你现在的处境——更新Visual Studio和Xamarin.Forms版本后旧项目报错,索性决定重写应用,却发现新版里创建页面只能选XAML页面类型,还担心之前旧版里的按钮点击事件逻辑怎么在新版里落地对吧?别慌,咱们一步步来解决这些问题:

一、关于新版Xamarin.Forms的页面创建

其实新版Xamarin.Forms(尤其是5.x及后续版本)默认创建的XAML页面是自带代码隐藏文件的,只是你可能没注意到:

  • 当你创建MainPage.xaml这类页面时,解决方案资源管理器里展开这个XAML文件,就能看到对应的MainPage.xaml.cs文件——这就是用来存放后台逻辑(比如按钮点击事件)的地方,和你旧版项目里的代码存放位置本质是一样的。
二、按钮点击事件的迁移实现

针对你旧版里MainPage.xaml和gridPage()中的按钮点击逻辑,这里给你两种适配新版的方案:

方案1:直接沿用XAML绑定事件的写法(和旧版逻辑完全对齐)

这是最快速的迁移方式,和你旧版的写法几乎一致:

  1. 在XAML文件中给按钮添加Clicked属性,指定事件处理方法名:
<Button Text="测试按钮" Clicked="OnTestButtonClicked" />
  1. 在对应的.xaml.cs文件中实现这个事件处理方法,把你旧版里的逻辑直接搬过来就行:
private void OnTestButtonClicked(object sender, EventArgs e)
{
    // 这里粘贴你旧版里的点击逻辑,比如跳转gridPage:
    Navigation.PushAsync(new GridPage());
    // 或者其他业务逻辑,比如弹出提示:
    DisplayAlert("提示", "按钮被点击了", "确定");
}

方案2:改用MVVM命令绑定(新版Xamarin.Forms推荐写法)

如果你想贴合新版的最佳实践,也可以用MVVM模式来实现按钮点击,这会让代码结构更清晰:

  1. 先创建一个ViewModel类,实现命令逻辑(可以用RelayCommand,如果没有的话,需要先安装Xamarin.Forms.Toolkit NuGet包,或者自己简单实现一个):
public class MainViewModel
{
    public ICommand TestButtonCommand { get; }

    public MainViewModel()
    {
        TestButtonCommand = new RelayCommand(ExecuteTestButtonAction);
    }

    private void ExecuteTestButtonAction()
    {
        // 这里写你的按钮点击逻辑,比如页面跳转、数据处理等
    }
}
  1. 在XAML页面中绑定这个命令:
<Button Text="测试按钮" Command="{Binding TestButtonCommand}" />
  1. 最后在页面的.xaml.cs中设置BindingContext,让XAML能找到ViewModel:
public MainPage()
{
    InitializeComponent();
    BindingContext = new MainViewModel();
}
三、关于gridPage的按钮逻辑迁移

你旧版里gridPage()中的测试按钮点击逻辑,只需要把对应的代码片段,按照上面两种方案中的任意一种,放到新版GridPage的代码隐藏文件或者对应的ViewModel里就行——核心业务逻辑是通用的,只要和新版的页面结构匹配上就没问题。

内容的提问来源于stack exchange,提问作者Anjali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:15:14