결국 현지화를 구현하기 위해 Xamarin 양식에 사용자 정의 마크 업 확장 프로그램을 사용하려고합니다. 저는 Xamarin 폼 예제의 라인을 오랫동안 보려고합니다.Xamarin.Forms.Xaml.XamlParseException : MarkupExtension을 찾을 수 없습니다.
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";
}
}
}
나는 단지의 경우 코드의 일부를 주석 : 여기
<?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>
가 번역 확장 마크 업 코드입니다 : 여기
확장자를 사용하는 XAML 코드의 조각이다 그것이 문제의 원인이었습니다.
실행하려고 할 때마다 오류가 발생합니다. Xamarin.Forms.Xaml.XamlParseException : MarkupExtension이 로컬에서 발견되지 않았습니다. 번역. 내가보기에 모든 예제가 같은 방식으로 수행되는 것처럼 마크 업 확장을 찾지 못하는 이유는 매우 혼란 스럽다. 왜이 사람이 될지 아무도 몰라? 나는 일반적으로 Xamarin 형태의 좋은 예를 찾는 데 많은 어려움을 겪고있다.
안녕하세요, Michelle, 공유 주셔서 감사합니다! 어떻게하면 XAML에서 다른 네임 스페이스 (iOS, Droid, WinPhone)를 처리 할 수 있었습니까? 어셈블리가'''assembly = MyApp''' 인 경우, WP를 위해 빌드 할 때'''assembly = MyApp.WinPhone'''로 변경해야합니다. 안드로이드 용으로 빌드 할 때''MyApp.Droid''' , usw ... – Wizche
기억 나는 공유 프로젝트를하고 있으므로 각 프로젝트마다 동일한 어셈블리 이름이되도록하십시오. 어셈블리 이름은 iOS, Android 및 Windows 용 각 프로젝트의 빌드 속성에 정의됩니다. 네임 스페이스는 확장을 작성한 네임 스페이스를 참조했습니다. 더 의미가 있습니까? – Michelle
네, 같은 해결책으로 끝났습니다. Xamarin rocks) – Wizche