我刚刚开始使用Xamarin.Forms应用程序,我想在我的XAML中添加背景图像。 我添加了属性,但是当我运行它时它不会出现!! 这是图像。
APP
public class App : Application
{
public App()
{
// The root page of your application
MainPage = new Page();
}
XAML:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="App1.Page"
BackgroundImage="bg.png">
那么,我该如何解决?
答案 0 :(得分:6)
在每个原生项目中添加bg.png
文件,因为您当前正在使用Android模拟器开始使用Xamarin.Android
项目:
Android - 使用Build Action将图像放在 Resources / drawable 目录中:AndroidResource
参考:https://developer.xamarin.com/guides/xamarin-forms/working-with/images/
示例:在您的Xamarin.Android
项目中,添加bg.png
,如下所示:
检查该图片的Build Action
并确保其已分配AndroidResource
。重建并重新测试。
答案 1 :(得分:3)
在Xamarin.forms
图像应放在以下文件夹中
iOS, Android - Resources folder
Windows/UWP, Windows Phone - Assets folder
然后应更改图像的构建操作(rt click img-&gt;属性),如下所示
iOS - BundleResource Windows Phone - Content
Android - AndroidResource Windows/UWP - Content
如果仍未显示图像,请尝试将图像属性
中的复制到输出目录更改为更新答案 2 :(得分:1)
如果要在XamaL项目中为整个页面添加XAML文件中的背景图像,请使用BackgroundImage属性并将您的图像添加到Resources项目下的Android项目中。 drawable文件夹和iOS Resources文件夹。
@section scripts{
<script>
function showCal() {
id = $('#EmployeeId').val();
if (id == null)
// tackle the checks for different IDs here right now id is null and current empID's record is shown
id = @Session["currentEmpID"].ToString();
else
{
//fetch the id from ddshowMembers here, the if() part is running in all conditions.
}
答案 3 :(得分:0)
图像文件可以添加到每个应用程序项目中,并从Xamarin.Forms共享代码中引用。要在所有应用程序中使用单个图像,必须在每个平台上使用相同的文件名,并且它应该是有效的Android资源名称(即,只允许使用小写字母,数字,下划线和句点)。
您可以在Working with Images Loading and displaying images in Xamarin.Forms
了解更多信息答案 4 :(得分:0)
缩小图像的大小。
答案 5 :(得分:0)
您可以实现此目的的另一种方式(source)是将图像的构建操作(在文件属性中)设置为嵌入式资源。
然后,使用转换器标记扩展,您将能够直接在XAML中使用它,并且不必复制或链接每个平台特定项目中的文件。
这是您应该添加到便携式项目中的转换器:
[ContentProperty(nameof(Source))]
public class ImageResourceExtension : IMarkupExtension
{
static readonly Assembly CurrentAssembly =
typeof(ImageResourceExtension).GetType().Assembly;
public const string Assets = nameof(Assets);
public string Source { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (string.IsNullOrWhiteSpace(Source))
return null;
// Do your translation lookup here, using whatever method you require
var source = $"{CurrentAssembly.GetName().Name}.{Assets}.{Source}";
var imageSource = ImageSource.FromResource(source, CurrentAssembly);
return imageSource;
}
}
然后在你的XAML中:
<?xml version="1.0" encoding="UTF-8" ?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:WorkingWithImages;assembly=WorkingWithImages"
x:Class="WorkingWithImages.EmbeddedImagesXaml">
<Image Source="{local:ImageResource Background.jpg}"}
</ContentPage>