La liaison source de l'image dynamiquement sur xamarin forms
ma question est, puis-je la Liaison de la chaîne de l'image à la source de l'image ? J'ai plusieurs image, et l'image va changer sur si la condition. Donc:
Xaml sur Xamarin forms:
<Image Source="{Binding someImage}" Aspect="Fill" Grid.Row="2"></Image>
Code c#
public String someImage;
public String SomeImage
{
set
{
if (someImage != value)
{
someImage = value;
}
}
get
{
return someImage;
}
}
InitializeComponent partie:
if(true)
{
someImage = "backgroundListViewGren.png";
}
else
{
someImage = "backgroundListViewRed.png";
}
l'image est en "Images" dans le dossier sur les portables du projet
mais cela ne fonctionne pas, peut-être que je wront quelque chose, mais je ne comprends pas.
Toutes les solutions ?
J'ai essayé avec ImageSource et non pas la chaîne, mais ne travaillez pas trop.
Avez-vous des images comme ça dans vos ressources dossiers? D'où viennent ces images?
l'image est en "Images" dans le dossier sur les portables du projet
utilisez-vous INotifyPropertyChanged? vous devez définir SomeImage = "xxx.png", pas someImage...
non, je n'utilisez pas de INotifyPropertyChanged, va essayer
l'image est en "Images" dans le dossier sur les portables du projet
utilisez-vous INotifyPropertyChanged? vous devez définir SomeImage = "xxx.png", pas someImage...
non, je n'utilisez pas de INotifyPropertyChanged, va essayer
the image is in "Images" folder on portable project
Cela ne fonctionnera pas. Vous devriez les placer dans chacun des projets respectifs de l'emplacement des ressourcesOriginalL'auteur Mr. Developer | 2017-04-11
Vous devez vous connecter pour publier un commentaire.
Je vais poster cette réponse ici, car c'est celui que je cherchais, et je soupçonne que la plupart des autres sont (et actuellement, Google vous amène ici, ce qui actuellement n'est pas super utile).
Comment lier une image à l'aide de XAML:
XAML:
Puis dans le ViewModel, C#:
Plus récent, mieux, mais essentiellement équivalent en c#, vous pouvez utiliser à la place de la ci-dessus:
C'est certainement la façon la plus simple de configurer, de l'OMI :).
EDIT: Il devrait aller sans dire, mais l'image doit évidemment être dans le
Resources
dossier du projet pour chaque plate-forme.^^ C'est rigoureusement inexact - vous absolument peut retourner une chaîne de caractères à partir de ce Dernier. Je ne peux pas commenter sur les traits d'union dans le nom de fichier même si, comme nous n'en avons pas. En fait essayer ce que vous suggérez via la méthode que je vous explique, je suis assez sûr que tout simplement pas de travail du tout :).
Il doit y avoir une différence subtile, je ne vois pas alors. les chaînes ne fonctionnent pas pour moi, mais le retour à la source de l'image n' 🙂
Je suppose que vous n'avez pas la configurer comme j'ai ci-dessus avec
<FileImageSource>
Ce doit être la accepté de répondre, il fonctionne comme un charme!
OriginalL'auteur Maverick
Vous dit:
Chaque plate-forme ont une approche différente pour les ressources et les images. Xamarin poignées de chaque plate-forme par exemple Xamarin.iOS a intégré de la ressource tout en Xamarin.Android utilise Android de ressources pour les images.
Vous devez placer vos images dans chaque projet pour Xamarin.Les formes de savoir où chercher pour eux, chaque plate-forme.
Pour plus d'informations regardez cette.
Bien que je vous recommande, il n'est pas absolument nécessaire
OriginalL'auteur Emad
Pour utiliser des images provenant de la PCL, découvrez cette partie dans le Xamarin documentation.
Vous devriez assurez-vous que le
Build action
pour chaque image est réglée surEmbedded Resource
.Alors, si vous voulez les utiliser dans le code XAML, spécifiez un MarkupExtension
Vous devriez alors être en mesure d'utiliser vos images comme ça.
Comme mentionné dans les commentaires, si vous voulez que cela fonctionne hors de la boîte placer dans le dossier de Ressources de votre projet de plate-forme. De cette façon, vous pouvez également tirer parti de l'ajustement automatique de la taille des mécanismes qui sont en place. Pour en savoir plus sur cette méthode, voir ce page.
Par l'ajout d'eux avec le bouton droit de la convention de nommage dans le bon dossier, vous pouvez simplement mentionner le nom de fichier et Xamarin.Les formes ne traduire que le bon format pour la plate-forme.
Vous pouvez déclarer votre image comme ceci:
<Image> <Image.Source> <FileImageSource File="{Binding Img}" /> </Image.Source> </Image>
et puis fournir unImageSource
que la liaison comme ceci:public ImageSource Image { get { return ImageSource.FromResource(string.Format("Touchretail.Trims.Mobile.Images.{0}", IconSource)); } }
Lors de l'utilisation .Net Std projject j'avais besoin d'utiliser: var assemblée = Assemblée.GetExecutingAssembly(); var imageSource = ImageSource.FromResource(Source, de l'assemblée);
OriginalL'auteur Gerald Versluis
Vous pouvez le faire un peu plus simple je pense. C'est en travaillant sur le mien.
Mettre l'image à l'endroit approprié sur chaque plate-forme, par exemple. Ressources/drawable sur Android
Dans votre Xaml:
Dans votre Modèle de Vue:
Alors juste someImage pour le nom de l'image (sans l'extension), et il doit mettre à jour.
OriginalL'auteur George McKibbin