我正在处理shared project并且我实施了Master Detail Page。现在我将一个图像添加到共享项目(又名embedded image)。图像的构建操作是嵌入式资源,我遵循将命名空间(HelloForms)和子文件夹(Ressources)考虑在内的建议。结果应如下:
正如您所见,leftBarButtonItem
是通过Icon
属性设置的。我尝试设置Icon
属性,如下所示:
Icon = Device.OS == TargetPlatform.iOS ? "HelloForms.Ressources.menu.png" : null;
和
Icon = new FileImageSource { File = "HelloForms.Ressources.menu.png" };
目前,我显示的是 Master 页面的标题,而不是Icon
。为了让这个工作,我需要改变什么?我对嵌入图片的解决方案感兴趣,而对本地图片的解决方案感兴趣。
答案 0 :(得分:3)
您的代码错误,您想使用ImageSource.FromResource,它是为此明确创建的:
Icon = ImageSource.FromResource("HelloForms.Ressources.menu.png");
修改强>
Icon是FileStream,因此无法使用ImageSource。此外,Xamarin有充分理由这样做,该文件将用于代表Android桌面上的应用程序,因此它必须可由系统访问,并且嵌入的资源不能像资源文件中那样。
“嵌入式资源”在这里引起混淆,在iOS项目上,Xamarin将默认的“内容”操作更改为“嵌入式资源”,这导致认为它嵌入在.net程序集中,但不是,它被复制到项目中
只需将文件作为资源添加到iOS / Android项目中,然后直接使用文件名。
答案 1 :(得分:0)
menu.png 已添加到共享项目中,这是错误的。将它添加到iOS项目的资源文件夹( Build Action = BundleResource )似乎可以解决问题。那你只需要这段代码
Icon = Device.OS == TargetPlatform.iOS ? "menu.png" : null;
让它发挥作用。似乎我误解了嵌入式图像。