Я пытаюсь использовать пользовательское расширение разметки с формами Xamarin, чтобы в конечном итоге реализовать локализацию. Я пытаюсь использовать длинные строки примеров формы Xamarin.
Вот фрагменты кода XAML, в котором используется расширение:
<?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>
Вот код для разметки расширения перевода:
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";
}
}
}
Я прокомментировал часть кода на всякий случай, если это было причиной проблемы.
Всякий раз, когда я пытаюсь запустить это, я получаю сообщение об ошибке: Xamarin.Forms.Xaml.XamlParseException: MarkupExtension не найден для локального: Translate. Я очень смущен тем, почему он не находит расширение разметки, поскольку все примеры, которые я смотрю, кажутся одинаковыми. Кто-нибудь знает, почему это будет? У меня много проблем с поиском хороших примеров для форм Xamarin.