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

Xamarin Forms按钮添加导航逻辑后点击背景色不生效问题

问题原因

  • 执行顺序错误:你先执行了Application.Current.MainPage.Navigation.PushAsync导航逻辑,新页面Page1会直接覆盖在当前页面上层,后续修改按钮背景色的代码即使执行成功,用户也看不到被遮挡的原页面按钮,视觉上就会觉得背景色修改失效。如果此时返回到原页面,你会发现按钮颜色其实已经被修改。
  • 异步方法调度问题:PushAsync是异步方法,你的代码没有添加await关键字等待执行,导航相关的UI渲染任务会优先占用主线程资源,背景色修改的UI更新请求可能会被调度延后甚至丢弃,进一步加剧该问题。
  • 额外补充:你当前代码中Activator.CreateInstance(new Page1())存在语法错误,Activator.CreateInstance的入参应该是类型对象而非页面实例,直接写new Page1()即可完成页面创建,不需要调用Activator.CreateInstance。

修复方案

调整代码执行顺序,先修改按钮背景色,再执行导航逻辑即可。如果需要让用户清晰感知到按钮点击的颜色反馈,可增加极短的延迟后再执行导航:

// 方法需要添加async修饰符支持await
private async void Navigate(object sender, EventArgs e)
{
    Button? button = sender as Button;
    if (button != null)
    {
        // 先修改按钮背景色
        button.BackgroundColor = Color.FromHex("#332196F3");
        // 可选:添加100毫秒延迟,让用户看到颜色变化再跳转,不需要可以删掉这行
        await Task.Delay(100);
        // 执行导航逻辑,添加await等待异步操作完成
        await Application.Current.MainPage.Navigation.PushAsync(new Page1());
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:57:03