Xamarin.Forms报错:未找到Xamarin.Forms.ImageSource的默认构造函数
解决Xamarin.Forms App.xaml中ImageSource资源声明的构造函数异常问题
问题根源
ImageSource是Xamarin.Forms中的抽象类,本身没有公开的默认构造函数,你直接用<ImageSource>标签实例化的写法不合法,这才是报错的核心原因。之前重新拉项目能临时解决,是因为旧缓存被清除了,但本质写法错误没修正,所以修改文件后会再次触发报错。
正确的资源声明写法
你需要使用ImageSource的具体派生类来声明资源,针对放在ResourceDirectory的本地资源文件,推荐用FileImageSource:
<FileImageSource x:Key="GreekNavBarImage" File="greek_temp.png" /> <FileImageSource x:Key="LatinNavBarImage" File="latin_temp.png" /> <FileImageSource x:Key="CurrentNavBarImage" File="greek_temp.png" />
如果是嵌入式资源,可改用EmbeddedImageSource并指定资源ID;网络图片则用UriImageSource。
解决本地修改后缓存报错的问题
修改代码后若仍报错,无需重新拉项目,执行以下步骤清理缓存即可:
- 删除项目目录下的
bin和obj文件夹 - 在Visual Studio中点击生成 > 清理解决方案
- 重启Visual Studio后重新生成项目
关于命名空间的说明
你使用的xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"是Xamarin.Forms兼容的命名空间,提示过时只是编辑器警告,不是本次异常的原因,可忽略。
内容的提问来源于stack exchange,提问作者milkman33995
相关产品推荐
相关产品推荐

