2010-04-28 23 views
3

J'essayer Blend 4 beta, et la recherche d'une façon de faire une chose simple:Blend 4 Beta: Comment changer la source d'image dans le cadre du scénario

  • Lorsqu'une souris est plané sur une image , l'image doit changer sa source pour une image différente. Lorsque le MouseLeave se produit, l'image revient en arrière.

Je sais je peux le faire dans le code source, mais je suis à la recherche d'un code façon libre de le faire, sans XAML codage manuel.

Le mélange 4 semble être un ajustement parfait. Mais j'ai essayé de définir ceci en utilisant des déclencheurs d'événements qui démarrent des histoires, ou en utilisant des états visuels, mais Blend ne semble pas "se souvenir" que la source d'image a changé. Il me souvient de changer d'autres propriétés de l'image (telles que la visibilité, l'échelle, etc.) mais la source de l'image est ce que je cherche.

Est-ce un bug dans le mélange, ou est-ce que je fais quelque chose de mal?

+0

Pourquoi ne pouvez-vous pas simplement avoir 2 images et changer la visibilité/l'opacité de l'une d'entre elles? –

+0

J'ai eu le même problème, mais j'ai juste codé à la main le XAML. :-( –

Répondre

2

Une option consiste à créer une action personnalisée et à la joindre à l'image. Cela implique toujours du code, mais il est plutôt mélangé.

public class ImageSwitchAction : TriggerAction<Image> 
{ 
    public ImageSource TargetImage { get; set; } 
    protected override void Invoke(object o) 
    { 
     AssociatedObject.Source = TargetImage; 
    } 
} 

Après avoir ajouté la classe à votre projet et la construction, vous pouvez faire glisser le nouveau comportement à tous les objets d'image dans la ligne de temps, et configurer le déclencheur et ImageSource dans les propriétés d'action. Dans votre cas, ajoutez une action pour MouseEnter et une pour MouseLeave.

+3

Maintenant que j'y pense, le ChangePropertyAction intégré fait la même chose: ajoutez-le à votre image, placez le trigger, choisissez TargetObject (l'image), choisissez PropertyName Source, et définissez sa valeur cible – Tosh

+0

peut tout ce qui se fait via le mélange? – RoyOsherove

+0

J'ai vérifié, et cela peut être fait dans le mélange. Way to go! – RoyOsherove

-2

manière simple:

premier, abonnez-vous les événements de votre souris d'image entrer et de la souris puis laisser dans ce événements

utilisation image.setsource (nouveau Uri (nouvelle URL de l'image)) pour définir la source d'image pour chaque événement

si u ont des problèmes que je peux poster ici du vrai code ci

Rui ce qui a trait

+1

Les questions étaient sur le faire sans avoir recours au code –