0

J'ai un contrôle utilisateur qui expose une propriété de type ImageSource. Je veux exposer cette propriété dans Blend afin que je puisse l'éditer dans Blend, plutôt que de spécifier l'image dans le code. En fonction de ce que j'ai recherché sur Google, j'ai ajouté une propriété de dépendance et spécifié les attributs appropriés pour exposer la propriété dans Blend.Affichage d'une propriété ImageSource dans un contrôle UserControl à utiliser dans Blend

Je peux le voir là, et l'éditer (comme un champ de texte). Ce que je veux faire est d'avoir une liste déroulante des ressources d'image disponibles, et un bouton de navigation pour charger une autre image. En d'autres termes, je veux qu'il se comporte comme la propriété 'Source' du contrôle 'Image'. Juste à part, j'ai remarqué que l'exposition des propriétés d'alignement ou de marge se comporte comme prévu, il semble que ce soit des images qui ne fonctionnent pas. Je suis vraiment bloqué sur celui-ci et j'apprécierais l'aide!

Mon code actuel ressemble à:

public static readonly DependencyProperty ImageSourceProperty = 
     DependencyProperty.Register("ImageSource", typeof(ImageSource), typeof(SmartButton)); 

[Category("Appearance")] 
[Bindable(true)] 
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
public ImageSource ImageSource 
{ 
    get { return (ImageSource)GetValue(ImageSourceProperty); } 
    set 
    { 
     SetValue(ImageSourceProperty, value); 
     this.BackgroundImage.Source = value; 
    } 
} 

Répondre

1

Je travaille sur presque exactement ce problème

Dans mon cas, je (moins Blend, plus en utilisant la propriété dans un ControlTemplate en XAML.) obtenu au travail en changeant ImageSource à BitmapSource. ImageSource est abstrait, BitmapSource étend ImageSource.

Cependant, quelque chose ne va pas dans ce sens. Le type de Image.Source est ImageSource. Que ce soit abstrait ou non, il semble que je devrais pouvoir utiliser un DependencyProperty de type ImageSource. Donc, pour mon propre cas, je l'ai fonctionné avec BitmapSource mais j'étudie toujours.

EDIT: J'espère que cela ne vous dérange pas une réponse près d'un an après avoir demandé, +/- 12 heures. ;)

EDIT2: George, je ne l'ai aussi que cela fonctionne pour moi avec l'aide ImageSource:

public static readonly DependencyProperty SourceProperty = 
    Image.SourceProperty.AddOwner(typeof(MyCustomButton)); 
public ImageSource Source 
{ 
    get { return (ImageSource)GetValue(SourceProperty); } 
    set { SetValue(SourceProperty, value); } 
} 
+0

Non, merci pour le tuyau! Je vais essayer la prochaine fois que je serai à Blend. –

+0

Ajout d'une nouvelle modification qui fonctionne avec ImageSource plutôt qu'avec BitmapSource. – JMD