Frage

Ich habe eine Benutzersteuerung, die eine Eigenschaft vom Typ Imagesource aussetzt. Ich mag diese Eigenschaft in Mischung zu, so dass ich es in Mischung bearbeiten kann, anstatt das Bild im Code angeben.

Nach dem, was ich gegoogelt habe, habe ich eine Abhängigkeitseigenschaft hinzugefügt und spezifiziert entsprechenden Attributen die Eigenschaft in Blend aus.

Ich kann es sehen dort, und es bearbeiten (als Textfeld). Was ich tun möchte, ist eine Dropdown-Liste der verfügbaren Bildressourcen haben, und eine Schaltfläche Durchsuchen, um ein anderes Bild geladen werden. Mit anderen Worten möchte ich es wie die ‚Quelle‘ Eigenschaft der ‚Bild‘ Kontrolle verhalten.

Bearbeiten Nebenbei bemerkt, ich habe bemerkt, dass die Ausrichtung oder Margin Eigenschaften aussetzt verhält sich wie erwartet, es scheint nur Bilder zu sein, die nicht funktionieren. Ich bin wirklich auf diesen einen stecken und würde es begrüßen, Hilfe!

Meine aktuellen Code wie folgt aussehen:

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;
    }
}
War es hilfreich?

Lösung

Ich arbeite seit fast genau dieses Problem (minus Blend, sowie mit der Eigenschaft in einem Control in XAML.)

In meinem Fall habe ich es bekommen, indem ImageSource arbeiten BitmapSource. Imagesource ist abstrakt, Bitmapsource erweitert Image.

Allerdings ist das Gefühl etwas nicht recht. Die Art der Image.Source ist Imagesource. Unabhängig davon, ob es abstrakt, scheint es, wie ich in die Lage sollte eine DependencyProperty vom Typ Imagesource zu verwenden.

Also, für meinen eigenen Fall, ich habe es mit BitmapSource arbeiten, aber ich bin immer noch untersucht.

EDIT: Hoffentlich Sie keine Antwort fast ein Jahr lang etwas dagegen, nachdem Sie gefragt, +/- 12 Stunden. ;)

EDIT2: George, ich habe auch das bekommen für mich arbeiten mit ImageSource mit:

public static readonly DependencyProperty SourceProperty =
    Image.SourceProperty.AddOwner(typeof(MyCustomButton));
public ImageSource Source
{
    get { return (ImageSource)GetValue(SourceProperty); }
    set { SetValue(SourceProperty, value); }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top