在Xamarin Forms中使用svg图像

时间:2017-12-17 20:49:43

标签: xaml xamarin svg xamarin.forms

我使用了nugget包SVG.Forms.Plugin.Abstractions,我从一个简单的例子中复制了下面的XAML但是无法显示svg。 图像位于'图像中。 TestApp应用程序中的文件夹,它的构建操作是嵌入式资源。 Svg可以在viewModel中绑定到下面的公共程序集。 我得到的只是一个空白屏幕,顶部是标题文字。 任何人都可以看到任何明显错误的东西吗?

public Assembly SvgAssembly
{
       get { return typeof(App).GetTypeInfo().Assembly; }
}

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" 
             x:Class="TestApp.MainPage" 
             xmlns:artina="clr-namespace:UXDivers.Artina.Shared;assembly=UXDivers.Artina.Shared" 
             xmlns:local="clr-namespace:TestApp;assembly=TestApp" Title="{ artina:Translate PageTitle}" BackgroundColor="{DynamicResource BasePageColor}"
             xmlns:abstractions="clr-namespace:SVG.Forms.Plugin.Abstractions;assembly=SVG.Forms.Plugin.Abstractions">

    <ContentPage.Content>

        <StackLayout>
            <abstractions:SvgImage
                SvgAssembly="{Binding SvgAssembly }"
                SvgPath="TestApp.images.brand.svg"
                Width="200"
                Height="200" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

2 个答案:

答案 0 :(得分:0)

Just a note :

  1. remove the spacing from your binding :

    SvgAssembly="{Binding SvgAssembly }"

  2. You should be referencing the image like this :

    SvgPath="brand.SVG"

You need to make sure you are referencing the image correctly : my answer from another question here.

答案 1 :(得分:0)

尝试使用FFImageLoading,因为它具有使用SVG图像的选项。它还具有在用户设备上缓存图像的选项。查找以下文档:

https://github.com/luberda-molinet/FFImageLoading/wiki/Xamarin.Forms-API