Xamarin 3.0 a introduit Xamarin.Forms , une abstraction d’interface utilisateur puissante qui permet aux développeurs de créer facilement des interfaces utilisateur pouvant être partagées sur Android, iOS et Windows Phone.
Cela semble très puissant, mais je suis confronté à quelques difficultés pour créer une interface utilisateur en tant que Xamarin.Forms est livré avec plus de 40 contrôles. Sans intellisense ou un concepteur minimaliste, il est assez contre-productif de rechercher toutes les propriétés dans le document officiel ou en parcourant le code c #.
Le teamplate Xaml par défaut est comme ça, et il n'est clairement pas trivial d'ajouter de nouveaux contrôles sans aucune aide.
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.Microsoft.com/winfx/2009/xaml"
x:Class="App1.Class1">
<Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>
Y a-t-il donc une chance d'avoir intellisense dans Xaml ou d'utiliser le concepteur Xaml?
Xamarin.Forms
ne vient pas avec un concepteur graphique (encore?). Quant à intellisense, il y a 2 parties:
J'ai eu du succès avec l'extension Xamarin.Forms Intellisense dans un PCL mais pas avec SAP.
Intellisense a été publié dans sa première forme, plus d'informations ici:
Mobile Essentials: Outils de productivité pour les développeurs mobiles
Xamarin Studio 6.1+ comprend un visualiseur XAML:
Ce n'est pas parfait, mais en tant que "version préliminaire", le rendu de votre XAML est correct dans différentes résolutions sur iOS et Android, y compris des orientations différentes.
Une vidéo d'enregistrement obligatoire: https://brax.tv/lesson/xamarin-forms-hello-xaml-previewer/
Xamarin Evolve Videos @ https://evolve.xamarin.com
(Les vidéos officielles Evolve au moment de cette publication ne sont pas encore en ligne)
Une société tierce développe actuellement un concepteur de Xamarin.Forms appelé UI Sleuth.
Ils sont toujours en mode furtif, mais ont posté deux vidéos de démonstration:
Je recommande en suivant l’architecte principal sur Twitter . C'est ici qu'ils affichent les dernières mises à jour de l'interface utilisateur Sleuth!
Si vous avez Resharper 9, alors intellisense fonctionne dans Visual Studio, avec l’extension Xamarin.Forms Intellisense mentionnée par Clint Landry.
Pour implémenter Intellisense sur VS, il suffit de disposer le schéma Xamarin.Forms XAML dans un fichier .xsd placé dans le dossier approprié de visual studio au moment de l'installation. Je suppose que le paquet/les tâches NuGet ne disposent pas au moment de l'installation et de l'accès requis par le système d'exploitation (à moins que vous n'exécutiez Visual Studio en tant que chemins d'accès codés en dur dans les tâches d'installation du paquet NuGet, ce qui n'est pas une bonne idée) pour le faire.
J'ai posé la même question à l'équipe Xamarin et celle-ci a répondu que l'Intellisense n'avait toujours pas été installé après les mises à jour et que le concepteur était appelé à venir (je ne sais pas quand, même pour les canaux de mise à jour alpha/bêta).
J'espère que ça aide...
Je viens de lire un Tweet sur un concepteur Xamarin.Forms annoncé lors de la conférence Xamarin Evolve 2016
En attendant, vous pouvez utiliser le concepteur Windows Phone et un convertisseur pour cracher le balisage Xamarin.Forms, voir: http://www.gui-innovations.com/Blog%20Posts/windows-phones-forms -to-xamarin-forms.html
Cet outil est également mentionné sur avec d’autres outils connexes sur: https://github.com/MvvmCross/MvvmCross-Forms/wiki/XAML-Tools-for-Xamarin
J'ai créé deux vidéos qui expliquent comment utiliser le nouvel outil de prévisualisation XAML de Xamarin Studio:
Utilisation des données de conception:
Données de conception avec ViewModelLocator:
Un exemple du code impliqué:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.Microsoft.com/winfx/2009/xaml"
x:Class="STLBrews.Mobile.BreweriesPage"
xmlns:vm="clr-namespace:STLBrews.ViewModels;Assembly=STLBrews.ViewModels"
BindingContext="{x:Static vm:ViewModelLocator.BreweriesVM}">
<ContentPage.Content>
<ListView
ItemsSource="{Binding Items}" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Image Source="{Binding LogoUrl}"/>
<StackLayout Orientation="Vertical" Spacing="0" VerticalOptions="Center">
<Label Text="{Binding Name}" FontAttributes="Bold"/>
<Label Text="{Binding Description}" FontSize="10"/>
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage.Content>
</ContentPage>