Xamarin.尽管配置正确,但窗体映像仍无法恢复

l5tcr1uw  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(54)

我在Xamarin.Forms应用程序中显示Image时遇到了问题。尽管遵循了正确的配置步骤,但图像仍不显示。下面是我的XAML和代码隐藏的简化版本:

XAML:

<ScrollView Orientation="Horizontal">
    <StackLayout x:Name="menuStack1" Orientation="Horizontal">
    </StackLayout>
</ScrollView>

字符串

C# Code-Behind:

public MainPage()
{
    InitializeComponent();
    Add();
}

private void Add()
{
    var image = new Image
    {
        Source = "YourNamespace.icon.png", // Replace YourNamespace with the namespace of your project
        Aspect = Aspect.AspectFit,
        HeightRequest = 50,
        WidthRequest = 50,
        AutomationId = "i"
    };

    // Add this line to check if the image exists
    Console.WriteLine($"Image file exists: {ImageSource.FromResource("YourNamespace.icon.png") != null}");

    image.GestureRecognizers.Add(new TapGestureRecognizer { Command = new Command(() => Image_Tapped()) });
    menuStack1.Children.Add(image);
}

private void Image_Tapped()
{
    DisplayAlert("Image Tapped", "Image tapped", "OK");
}


我已经验证了图像文件被标记为嵌入式资源,并且文件路径和命名空间都是正确的。但是,图像没有显示。代码中的Console.WriteLine语句表示找不到图像文件。
是什么原因导致了这个问题,我该如何进行故障排除或解决它?我是否应该采取任何其他步骤来确保正确加载映像?
如有任何指导或建议,将不胜感激。谢谢!

mi7gmzs6

mi7gmzs61#

有两种方法可以显示案例的图像,

选项1使用嵌入镜像

当在每个平台上使用相同的图像时,建议使用此方法,并且此方法特别适合于创建组件,因为图像与代码捆绑在一起。
要使用它,只需像您一样将图像放置在Main项目中,并将Build Action设置为EmbeddedResource
然后使用下面的代码获取图像源,

var image = new Image
        {
            Source = ImageSource.FromResource("Yournamespace.icon.png", typeof(MainPage).GetTypeInfo().Assembly), // Replace YourNamespace with the namespace of your project
            Aspect = Aspect.AspectFit,
           ...
        };

字符串

选项2使用本地镜像

对于Android,请使用Build ActionAndroidResource将图片放置在Android项目的Resources/drawable目录中。
对于iOS,可以使用Build ActionBundleResource将镜像放置在iOS项目的Resources目录中,也可以使用Asset Catalog Image Sets
对于UWP -映像应放置在UWP项目的根目录中,并带有Build Action:Content
那么当你使用这个图像的时候,不需要使用空格,只需要设置,

var image = new Image
{
    Source = "icon.png", 
    ...
};


有关更多信息,请参阅Images in Xamarin.Forms

相关问题