Question

Dans mon application, je souhaite redimensionner une image miniature lorsque je clique dessus. Toutes les images se trouvent dans ItemTemplate, où sa propriété Source est liée à l'URL de l'image.

J'essaie quelque chose comme ça (c'est dans mon fichier DataTemplate)

<TextBlock>
   <Hyperlink TextDecorations="None"
               Command="helpers:StatusesCommands.ShowPicture"
               CommandParameter="{Binding}">
                    <Image Source="{Binding Path=FirstPictureUrl}" Margin="5"   />
   </Hyperlink>
</TextBlock>

Mais dans le gestionnaire de commandes, je ne sais pas comment accéder à cette image. La propriété OriginalSource sur ExecutedRoutedEventArgs est définie sur HyperLink et Source sur Mon contrôle.

Peut-être est-il possible de définir CommangParameter sur mon image imbriquée, mais je ne sais pas comment le faire. Avez-vous une idée de comment résoudre ce problème?

Était-ce utile?

La solution

Vous liez le paramètre de commande au contexte de données, vous aurez donc accès au chemin de l'image dans le paramètre de commande, si vous convertissez le paramètre correctement.

Pour passer directement l'image en tant que paramètre de commande, nommez d'abord l'image:

<Image x:Name="myImg" Source="{Binding Path=FirstPictureUrl}" Margin="5"/>

Liez le CommandParameter à cette image:

CommandParameter="{Binding ElementName=myImg}"

Il est difficile de savoir où vous gérez cette commande. Si vous le manipulez dans le code postérieur de ce code XAML, vous pouvez nommer l'élément Image et le nommer par son nom dans le fichier code derrière. Cependant, il est généralement préférable de transmettre ce que vous avez besoin à la commande en tant que paramètre. Parfois, la commande est gérée loin de l'endroit où elle est déclenchée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top