2017-10-25 11 views
0

私はApp.xamlのResourceDictionaryに文字列を持っています。私はこのような別のStaticResourceの内側にそれを使用することができますどのようにXamarin XAML StaticResourceもう1つ

<x:String x:Key="logoEvo">.Images.logoEvo.png</x:String> 

<Image Source="{sgat:ImageResource SgatMobileOnline{StaticResource logoEvo} }" /> 

ImageResourceのファイルです:

using System; 
using Xamarin.Forms; 
using Xamarin.Forms.Internals; 
using Xamarin.Forms.Xaml; 

namespace SgatMobileOnline { 

    // You exclude the 'Extension' suffix when using in Xaml markup 
    [Preserve(AllMembers = true)] 
    [ContentProperty("Source")] 
    public class ImageResourceExtension : IMarkupExtension { 
     public string Source { get; set; } 

     public object ProvideValue(IServiceProvider serviceProvider) { 
      if (Source == null) { 
       return null; 
      } 
      // Do your translation lookup here, using whatever method you require 
      var imageSource = ImageSource.FromResource(Source); 

      return imageSource; 
     } 
    } 
} 

ありがとうございました! App.csで

答えて

1

<Application.Resources> 
    <ResourceDictionary> 
     <x:String x:Key="logoEvo">test.png</x:String> 
    </ResourceDictionary> 
</Application.Resources> 

XAML:

<Image Source="{local:ImageResourceExtension logoEvo}" /> 

ImageResourceExtension

namespace App1 
{ 
[Preserve(AllMembers = true)] 
[ContentProperty("Source")] 
public class ImageResourceExtension : IMarkupExtension 
{ 
    public string Source { get; set; } 

    public object ProvideValue(IServiceProvider serviceProvider) 
    { 
     if (Source == null) 
     { 
      return null; 
     } 

     string s = Application.Current.Resources[Source] as string; 
     // Do your translation lookup here, using whatever method you require 

     var assembly = typeof(ImageResourceExtension).GetTypeInfo().Assembly; 
     var assemblyString = assembly.GetName().Name.ToString(); 
     var imageSource = ImageSource.FromResource(assemblyString + "." + s); 
     return imageSource; 
    } 
} 
} 

PS:確認してくださいイメージのビルドアクション埋め込まれたリソースとして

+0

ありがとうございます。投稿する前に試しましたか? 働いていないので.. – Hikari

+0

@ Jackpot21私はそれを試して、完全に動作します。文字列 –

+0

@ Jackpot21を使って画像にアクセスできることを確認してください。私はuwpプロジェクトでテストし、画像はルートフォルダ –

関連する問題