2014-10-30 10 views
5

Próbuję użyć niestandardowego rozszerzenia znaczników z formularzami Xamarin, aby ostatecznie zaimplementować lokalizację. Próbuję przejść długą listę przykładów form Xamarin.Xamarin.Forms.Xaml.XamlParseException: Nie znaleziono elementu MarkupExtension

Oto fragmenty kodu XAML, który korzysta z rozszerzeń:

<?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> 

Oto kod za tłumaczenie Extension Markup:

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

ja skomentował niektóre z kodem na wszelki wypadek to była przyczyna problemu.

Ilekroć próbuję uruchomić to otrzymuję błąd: Xamarin.Forms.Xaml.XamlParseException: MarkupExtension nie znaleziono dla local: Tłumacz. Jestem bardzo zdezorientowany, ponieważ nie znajduje się rozszerzenie znaczników, ponieważ wszystkie przykłady, na które patrzę, wydają się być wykonane w ten sam sposób. Czy ktoś wie, dlaczego tak się stało? Mam ogólne problemy ze znalezieniem dobrych przykładów form Xamarin.

Odpowiedz

4

Nazwa zestawu jest nieprawidłowa. Używałem wspólnego projektu dla formularzy Xamarin i miałem nazwę wspólnego projektu jako nazwy zespołu. Więc jeśli masz wspólny projekt, nazwa zespołu musi być zbiorem, który używa współużytkowanego projektu.

+0

Witaj Michelle, dzięki za udostępnienie! Jak udało Ci się obsłużyć różne przestrzenie nazw (iOS, Droid, WinPhone) z XAML? Chodzi o to, że twoje zgromadzenie to '' 'assembly = MyApp''', które będziesz musiał zmienić na' '' assembly = MyApp.WinPhone''' podczas budowania dla WP, '' 'MyApp.Droid''' podczas budowania dla Androida , usw ... – Wizche

+0

Pamiętaj, że robię wspólny projekt, dlatego nazwałem to samo dla każdego projektu. Nazwa zestawu jest definiowana we właściwościach kompilacji w każdym z projektów dla systemów iOS, Android i Windows. Przestrzeń nazw odnosiła się do przestrzeni nazw, w której pisałem rozszerzenie. Czy to ma więcej sensu? – Michelle

+0

Tak, skończyło się na tym samym rozwiązaniu. Xamarin rocks;) – Wizche

Powiązane problemy