2014-10-30 5 views
5

결국 현지화를 구현하기 위해 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 형태의 좋은 예를 찾는 데 많은 어려움을 겪고있다.

답변

4

어셈블리 이름이 잘못되었습니다. Xamarin 양식에 공유 프로젝트를 사용하고 있으며 공유 프로젝트의 이름을 어셈블리 이름으로 사용했습니다. 따라서 공유 프로젝트가있는 경우 어셈블리 이름은 공유 프로젝트를 사용하는 어셈블리 여야합니다.

+0

안녕하세요, Michelle, 공유 주셔서 감사합니다! 어떻게하면 XAML에서 다른 네임 스페이스 (iOS, Droid, WinPhone)를 처리 할 수 ​​있었습니까? 어셈블리가'''assembly = MyApp''' 인 경우, WP를 위해 빌드 할 때'''assembly = MyApp.WinPhone'''로 변경해야합니다. 안드로이드 용으로 빌드 할 때''MyApp.Droid''' , usw ... – Wizche

+0

기억 나는 공유 프로젝트를하고 있으므로 각 프로젝트마다 동일한 어셈블리 이름이되도록하십시오. 어셈블리 이름은 iOS, Android 및 Windows 용 각 프로젝트의 빌드 속성에 정의됩니다. 네임 스페이스는 확장을 작성한 네임 스페이스를 참조했습니다. 더 의미가 있습니까? – Michelle

+0

네, 같은 해결책으로 끝났습니다. Xamarin rocks) – Wizche

관련 문제