Xamarin Forms.Xaml.XamlParseException

Je crée un comportement xamarin pour valider un identifiant de messagerie. J’ai donc créé le fichier de comportement et essayé de le localiser dans un fichier XAML, mais l’erreur suivante s’affiche.

Xamarin.Forms.Xaml.XamlParseException: Position 12:10. Type local: EmailBhvr non trouvé dans xmlns espace de noms clr: Validation.Helpers; assembly = Validation.Helpers

Namespace: Validation

Fichier de code de comportement: EmailBhvr

Voici mon code XAML:

   

Cela pourrait être lié à un problème de liaison connu – où le compilateur Xamarin finit par lier des classes (d’assemblages externes) qui ont des références uniquement en XAML.

On dirait que EmailBhvr pourrait être lié par le compilateur. Il y a quelques liens qui parlent de ça:

  1. Extension de plugins de contrôle > Mise en route
  2. Force assemblée reliant

Il y a beaucoup d’options pour résoudre ceci:

  1. Ajoutez une méthode statique Init dans chaque classe, comme indiqué ici dans la section “Démarrage”.

     // this ensures the class does not get // linked out in the application we add this assembly to. public static void Init() { } 
  2. Ou, conservez le code à l’aide des atsortingbuts de préservation sur Android et iOS

     public class Example { [Android.Runtime.Preserve] public Example () { } } 
  3. Ou utilisez un lien personnalisé .

  4. Ou, mettez à jour la configuration du projet pour ne pas lier. Android et iOS . Pas une option recommandée cependant.

Je pense que votre XAML est propre. Semble sans erreur. Je pense que le problème est avec la classe EmailBhvr dans la Validation . Je vous suggère de le vérifier. Assurez-vous que le nom de l’assembly dans XAML est également correct. XamlParseException peut également se produire avec un nom d’assembly incorrect.

Je pense que vous avez commis une erreur en écrivant des noms de balises / propriétés dans votre fichier EmailBhvr.

A cause de cela, vous obtenez une exception d’parsing syntaxique.

Pour que l’importation fonctionne, la classe EmailBhvr doit

  1. être nommé “EmailBhvr”
  2. résider dans un assemblage portant le nom d’assemblage “Validation”.
  3. résider dans l’espace de noms “Validation” (vérifiez votre fichier de classe)

Soyez particulièrement prudent avec 2 .: Si vous utilisez un projet partagé, le nom de l’assemblage sera celui du projet de plate-forme (par exemple, il pourrait s’agir de Validation.Droid / Validation.iOS). Cela peut être corrigé en donnant le même nom d’assemblage (dans les propriétés du projet). Par exemple, “Validation.Platform” et modifiez l’importation des espaces de noms xaml en conséquence

Assurez-vous que le nom de l’assembly dans XAML est correct. il devrait ressembler à ceci xmlns: local = “espace de noms clr: ProjectNamspace.Validation; assembly = ProjectNamspace.Validation”