Créer un contr ôle ré 100% 사마린 이용 가능.표, 섹션 1
Partie 1 :
Clip
et desGeometry
récement apparues dansXamarin.FormsGrid
Shape
,autre nouveautédeXamarin.FormsCréer un contr ôle r é 이용 가능 et 호환 MVVM
BindableProperty
)Converters
Certaines 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 options
Niveau 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.
Clip
est une propriétédesVisualElements,de typeGeometry
et 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
Geometry
circulaire et l'appliqueráClip
pour 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 sulfitqueRadiusX
etRadiusY
aient la même valer.Center
permet 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
Image
et leurs ellipes aient les mêmes dimensions.Nous renseigneronségalement les propriétés
HorizontalOptions
etVerticalOptions
de 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
CircleImage
simple 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
ActivityIndicator
a 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'affecterTrue
a 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 unBinding
bien 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
Path
du 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();
}
LesShapes
comme leur nom l'indique sont des formes que l'on peut Ajuter en tant queVisualElement
sur la page.La forme qui nous intérese est láencore uneEllipse
.Attention à ne pas confondre l'
EllipseGeometry
qui est la description d'un objet géométrique, avec l'Ellipse
qui est un contrôle Visuel !
Stroke
etStrokeThickness
sont 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 jaune
Fin 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.)