2014-10-30 8 views
5

Nihayetinde yerelleştirmeyi gerçekleştirmek için Xamarin formları ile özel bir biçimlendirme uzantısı kullanmaya çalışıyorum. Xamarin form örneklerinin uzun bir çizgi gitmeye çalışıyorum.Xamarin.Forms.Xaml.XamlParseException: MarkupExtension bulunamadı

using System; 
using Xamarin.Forms.Xaml; 
using Xamarin.Forms; 
using System.Diagnostics; 

namespace CRI.MAP.Mobile.Views 
{ 
    // You exclude the 'Extension' suffix when using in Xaml markup 
    [ContentProperty ("Text")] 
    public class TranslateExtension : IMarkupExtension 
    { 
     public string Text { get; set; } 

     public object ProvideValue (IServiceProvider serviceProvider) 
     { 
      //if (Text == null) 
      // return null; 
      //Debug.WriteLine ("Provide: " + Text); 
      // Do your translation lookup here, using whatever method you require 
      //var translated = L10n.Localize (Text); 

      //return translated; 
      return "hello"; 
     } 
    } 
} 

ihtimale karşı kodunun bazılarını yorumladı: Burada

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    xmlns:local="clr-namespace:CRI.MAP.Mobile.Views;assembly=CRI.MAP.Mobile" 
    x:Class="CRI.MAP.Mobile.Views.CustomerSearchPage"> 

    <StackLayout> 
     <Button 
      Text="{local:Translate Clear}" 
      Command="{Binding ClearCommand}" /> 
    </StackLayout> 

Çeviri Uzatma İşaretleme kodudur: Burada

uzantısını kullanan XAML Kanununun bir adet Meselenin nedeni buydu.

Bunu çalıştırmayı denediğimde, hatayı alıyorum: Xamarin.Forms.Xaml.XamlParseException: MarkupExtension yerel için bulunamadı: Çevir. İşaretleme uzantısını bulamıyorum çünkü baktığım tüm örneklerin aynı şekilde yapıldığı görülüyor. Bunun neden olacağını bilen var mı? Genel olarak Xamarin formları için iyi örnekler bulmada çok fazla sıkıntı yaşıyorum.

cevap

4

Montaj adı yanlış. Xamarin formları için ortak bir proje kullanıyordum ve montajın adı olarak ortak projenin adı vardı. Paylaşılan bir projeniz varsa, derlemenin adı paylaşılan projeyi kullanan derleme olması gerekir.

+0

Merhaba Michelle, paylaşım için teşekkürler! XAML'den farklı ad alanlarını (iOS, Droid, WinPhone) nasıl ele aldınız? Eğer derlemeniz '' 'assembly = MyApp'' ise, Android için inşa ederken WP,' 'MyApp.Droid''' için inşa ederken' '' assembly = MyApp.WinPhone''' olarak değiştirmeniz gerekecek demektir. , usw ... – Wizche

+0

Paylaşılan bir proje yapıyorum, bu yüzden her proje için aynı derleme adı yaptım. Montaj adı, iOS, Android ve Windows için her bir projedeki yapı özelliklerinde tanımlanır. Ad alanı, uzantıyı yazdığım ad alanına yönlendirdi. Bu daha mantıklı mı? – Michelle

+0

Evet, aynı çözüm ile bitti. Xamarin kayalar;) – Wizche