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.
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
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
Tak, skończyło się na tym samym rozwiązaniu. Xamarin rocks;) – Wizche