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

.NET MAUI中如何用C#修改Button的ImageSource?

解决Xamarin.Forms按钮点击无法修改ImageSource的问题

先排查最常见的资源配置问题

这是绝大多数人踩坑的核心原因:你的图片资源没有正确配置,导致运行时找不到新图片,所以看起来毫无变化。

  • Android:把图片放到Resources/drawable(或对应分辨率的drawable-hdpi等)文件夹,右键图片→属性→生成操作设为AndroidResource。
  • iOS:图片放Resources文件夹,生成操作设为BundleResource;如果用Asset Catalog,要把图片添加到Assets.xcassets中。
  • UWP:图片放Assets文件夹,生成操作设为Content。

代码里正确设置ImageSource

不要直接赋值字符串,明确使用ImageSource的静态方法或实例,确保框架正确解析资源:

private void Button_Clicked(object sender, EventArgs e)
{
    var statusButton = (Button)sender;
    // 推荐用FromFile方法,自动适配各平台资源规则
    statusButton.ImageSource = ImageSource.FromFile("right.png");
}

如果还是没反应,试试这些办法

  1. 强制刷新UI:设置完ImageSource后,手动触发控件重绘
statusButton.ImageSource = ImageSource.FromFile("right.png");
statusButton.InvalidateMeasure();
statusButton.ForceLayout();
  1. 检查样式/绑定覆盖:如果按钮使用了Style且Style中设置了ImageSource,代码赋值会被覆盖,此时用SetValue强制设置:
statusButton.SetValue(Button.ImageSourceProperty, ImageSource.FromFile("right.png"));
  1. 用嵌入资源测试:排除路径问题,把图片设为嵌入资源(右键→属性→生成操作设为Embedded resource),通过资源路径加载:
// 替换为你的项目命名空间+图片所在文件夹路径
statusButton.ImageSource = ImageSource.FromResource("YourAppName.Images.load.png");

快速验证步骤

  1. 先在XAML里直接替换ImageSource="load.png",看能否正常显示,排除图片本身的问题。
  2. 确认新图片的文件名大小写和代码里一致(部分平台对大小写敏感)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 04:40:07