2017-10-25 12 views
0

App.xaml의 ResourceDictionary에 문자열이 있습니다.Xamarin XAML 다른 하나의 내부 StaticResource

<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 프로젝트에서 테스트하고 이미지가 루트 폴더 –