2017-10-25 3 views
0

Ich habe eine Zeichenfolge in meinem ResourceDictionary in App.xaml.Xamarin XAML StaticResource in einem anderen

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

Wie kann ich es in einem anderen Static verwenden wie folgt aus:

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

ImageResource der Datei ist:

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; 
     } 
    } 
} 

Thank you!

Antwort

1

In App.cs

<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: Stellen Sie sicher, dass die Build Action Image als Eingebettete Ressource

+0

Danke aber, hast du das schon mal probiert? Weil funktioniert nicht .. – Hikari

+0

@ Jackpot21 Ich habe es versucht und funktioniert perfekt. Bitte stellen Sie sicher, dass Sie auf das Bild über die Zeichenfolge zugreifen können –

+0

@ Jackpot21 Ich teste in uwp Projekt und das Bild befindet sich im Stammordner –