Créer un contr ôle ré 100% 사마린 이용 가능.표, 섹션 1
Partie 1 :
Clipet desGeometryrécement apparues dansXamarin.FormsGridShape,autre nouveautédeXamarin.FormsCréer un contr ôle r é 이용 가능 et 호환 MVVM
BindableProperty)ConvertersCertaines fonctionnalités comme les Shapes et leurs Geometries nécessitent Xamarin.Forms 4.8 ou supérieure, pensez bien à mettre-à-jour le package après avoir créé votre solution !
공공 재정
파스드 궁금증, je vous livre d'emblé e un visuel pour que vous sachiez o u je vous amène.Celui ci simule une 페이지 연락처:
Démonstration de l'image circulaire avec ses différentes optionsNiveau contenu,la page affiche une liste de contacts NOT chaque photo provient d'une source différente:
Les contacts enregistrés comme favoris sont signalés par une bordure jaune autour de la photo.
마지막으로, 나는 너의 사진을 보았고, 나는 너의 사진을 보았고, 나는 너의 사진을 보았다.형식 choueáchargerles 이미지.
Mais je vous vois frétiller d'anpatience,vousêtes venu ici pour voir du code,alors allons-y
편집 편집, dé coupage de l'image
Plutôt que de vous livrer de gros blocs de code illibles sur une page web,je vais dans cet article aller directementál'essentiel,vous trouverez le code complet sur moncompte GitHub,comme d'habitude.
오히려 추천인, 평론자, 사진 돌려보기?
우리는 deux fonctionnalités apparuesdernièrement dans Xamarin을 사용합니다.형식, lapriétéClip(découper enanglais)etlesGeometries.
Clipest une propriétédesVisualElements,de typeGeometryet qui définit le contour du contenu d'unélément visuel.클레어야?예를 들어,celui qui nous concerne:j'ai une image carr é e et je souhaite afficher uniquement son contenu inscrit dans Un cercle.Je vais donc définir une
Geometrycirculaire et l'appliqueráClippour découper l'image selon cette forme.les yeux, voici le code:
<Image Source="monimage.png" width="200" Height="200">
<Image.Clip>
<EllipseGeometry RadiusX="100"
RadiusY="100"
Center="100,100" />
</Image.Clip>
</Image>
La géométrie circulaire n'existant pas,nous nous baserons sur une eliple.Celle ci se dé finit á partir d'un center et de deux rayons, 수평RadiusX과 수직RadiusY.거꾸로 obtenir uncercle, il sulfitqueRadiusXetRadiusYaient la même valer.Centerpermet de Positioner l'ellipse par reportáson contenant.계산과 위치를 간소화하고 자신의 이미지를 드러내다.
Pour obtenir un cercle centr é et inscrit dans le carré,les rayons seront moiti é plus petits que le cøt é de l'image와 le center du cercle sera au centre de l'image.
봐라, obtenir une image circulaire c'est devenu aussi simple que a avec Xamarin.형식Beaucoup de texte et d'explications pour quelque는 devenu finalement assez 자질구레함을 선택했습니다!
L'image 교체
댓글 faire pour afficher une image par dé faut quand il n'y a pas d'image á afficher?
va USER une TECHNOLOGY ANCIENE et bien connue mais toujours très utile: l'empilement dans une
Grid에 관하여.Leséléments contenus dans une même cellule d'une Grid se superpristed Les uns sur Les autres,le dernier déclarédans le fichier Xamlétant au dessus,la touch de celui ciétant séquentielle.Nous allons donc définir une Gridáune seule cellle et y ajour deux
Images:la première est destinéeáafficher l'image de substitution,la secondeáafficher l'image proprement dite.Pour que les deux images se superperssent sans décalage,il est nécessaire que les deux composants
Imageet leurs ellipes aient les mêmes dimensions.Nous renseigneronségalement les propriétés
HorizontalOptionsetVerticalOptionsde la Grid avec des valeurs qui forcefront celle ciáadopter les mêmes dimensions que son contenu.DRY - Je vais avoir besoin de créer deux fois une image circulaire simple, et il est probable que ce besoin se répète dans d'autres contextes. J'ai donc créé un contrôle
CircleImagesimple encapsulant le code précédent. Nous verrons dans la seconde partie de l'article comment créer un contrôle réutilisable.
<Grid HorizontalOptions="Center" VerticalOptions="Center">
<local:CircleImage Source="monPlaceholder.png" ImageSize="128" />
<local:CircleImage Source="monImage.png" ImageSize="128" />
</Grid>
De cette manière,l'image vient cacher le placeholder si elle est disponible,sinon on voit ce dernierála place.L'indicateur de chargement 표시등
Aujourd'hui c'est atelier empilage,nous allons encore Superciser:ajoutons un
ActivityIndicatora notre Grid.L'
ActivityIndicator은 서로 다른 로봇과 iOSmais le principe reste le mème: c'est un bidule qui tourne de façon hypottique pour faire oublier le temps qui passe á L'utisateur.Pour le voir tourner,il Suffet d'affecterTruea sa propriétéIsRunning.<Grid>
<local:CircleImage x:Name="monPlaceholder" ImageSize="128" />
<local:CircleImage x:Name="monImage" ImageSize="128" />
<ActivityIndicator IsRunning="True"
VerticalOptions="Center"
HorizontalOptions="Center"
/>
</Grid>
Nous avons donc un indicateur qui tourne au CENTER de notre 이미지.C'est bien,mais il tourne en permanence and nous aurions besoin de l'activer uniquement 펜던트 le chargement de l'image.Cela tombe bien, le contr ôle
Image expose une propriétéIsLoading qui vautTrue 펜던트 le chargement de l'image etFalse une fois le chargement termine,peu importe que l'opérationce soit bien dé roulée ou non.Reste une 질문: 댓글 lier la propriété
IsRunning de l'indicateur á la propriétéIsLoading de l'image?Par unBindingbien entendu!Mais comment binder une propriétéd'un contrôleáune propriétéd'un autre contrôle?이것은 연결된 원본 코드입니다!Le plus simple ici est de donner un nom expliciteánotre contrôLe Image(monImage par example)et de se référeráce nom comme source du Binding.La propriétévisée sera définie comme
Pathdu Binding:"{Binding Source={x:Reference monImage}, Path=IsLoading}"Avec un peu plus de contexte,cela donne:<Grid>
<local:CircleImage x:Name="monPlaceholder" ImageSize="128" />
<local:CircleImage x:Name="monImage" ImageSize="128" />
<ActivityIndicator IsRunning="{Binding Source={x:Reference monImage}, Path=IsLoading}"
VerticalOptions="Center"
HorizontalOptions="Center"
/>
</Grid>
De cette façon,nous verrons un indicateur De chargement tournoyer au centre De l'image durant le chargement De celle ci.
Et pourtant,elle tourne!라보두르
Pour afficher une bordure autour de l'image,nous allons tirr parti des
Shapes encore sous forme expérimentale sous Xamarin.표 4.8.Si-la 버전 de Xamarin.표 que vous USERIZ n'int è gre pas encore les
Shapes de fa çon officielle,vous devrez dé clarer la fonctionnalit é expé rimentale dans le constructure de la classeApp.xaml.cs sous peine de lever uneInvalidOperationException au lancement de l'application:public App()
{
Device.SetFlags(new string[] { "Shapes_Experimental" });
InitializeComponent();
MainPage = new MainPage();
}
LesShapescomme leur nom l'indique sont des formes que l'on peut Ajuter en tant queVisualElementsur la page.La forme qui nous intérese est láencore uneEllipse.Attention à ne pas confondre l'
EllipseGeometryqui est la description d'un objet géométrique, avec l'Ellipsequi est un contrôle Visuel !
StrokeetStrokeThicknesssont les deux propriétés exposées par l'eliple qui définissent la couleur et lépaisseur de son courour.Nous n'aurons pas besoin des autres propriétés,mais Nous pourrions affiner en définissant le type de contour(pointillé…)오라 쿨러 드 렘프리저 드 엘리스.<Ellipse Stroke="Yellow" StrokeThickness="2" />
스위트룸, c'est juste une historire d'empilage dans laGrid,vous commercez á avoir l'habitude.<Grid>
<local:CircleImage x:Name="monPlaceholder" ImageSize="128" />
<local:CircleImage x:Name="monImage" ImageSize="128" />
<Ellipse Margin="0"
HorizontalOptions="Center"
VerticalOptions="Center"
Stroke="Yellow"
StrokeThickness="2"
HeightRequest="128"
WidthRequest="128"
/>
<ActivityIndicator [...] />
</Grid>
Ce qui donne:
Une 이미지 순환 bordée de jauneFin de(première)partie회사
L'article s'avère bien plus détailléque je ne L'avis prévu au départ etça startètre bien consistant.Je vous laisse donc dig é rer tout ça et vous donne rendez vour la seconde partie dans laquelle nous verrons comment assembler tout ceci pour en faire un contr ôle r é usabled avec des propri és Bindable pour le rendre'MVVM 우호형.
Reference
이 문제에 관하여(Créer un contr ôle ré 100% 사마린 이용 가능.표, 섹션 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sylvainmoingeon/creer-un-controle-reutilisable-100-xamarin-forms-partie-1-4mgo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)