0

ImageSource 型のプロパティを公開するユーザー コントロールがあります。コードで画像を指定するのではなく、Blend で編集できるように、このプロパティを Blend で公開したいと考えています。

Google で検索した内容に基づいて、依存関係プロパティを追加し、Blend でプロパティを公開するための適切な属性を指定しました。

そこに表示され、(テキスト フィールドとして) 編集できます。私がやりたいのは、利用可能な画像リソースのドロップダウン リストと、別の画像を読み込むための参照ボタンです。つまり、「イメージ」コントロールの「ソース」プロパティのように動作するようにしたいと考えています。

編集余談ですが、Alignment または Margin プロパティを公開すると期待どおりに動作することに気付きました。動作しないのは画像のようです。私は本当にこれに行き詰まっており、助けていただければ幸いです!

私の現在のコードは次のようになります。

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;
    }
}
4

1 に答える 1

1

私はほぼ正確にこの問題に取り組んできました (Blend を除いて、XAML の ControlTemplate でプロパティを使用しています)。

私の場合、に変更することで機能するようになりましImageSourceBitmapSource。ImageSource は抽象的で、BitmapSource は ImageSource を拡張します。

ただし、これについては何かが正しくありません。Image.Source のタイプは ImageSource です。抽象的であるかどうかにかかわらず、ImageSource 型の DependencyProperty を使用できるように思われます。

だから、私の場合、私はそれで動作していますBitmapSourceが、まだ調査中です。

編集: 質問してからほぼ 1 年後、+/- 12 時間以内に回答が得られることを願っています。;)

EDIT2: ジョージ、私もこれをImageSource使用して動作するようにしました:

public static readonly DependencyProperty SourceProperty =
    Image.SourceProperty.AddOwner(typeof(MyCustomButton));
public ImageSource Source
{
    get { return (ImageSource)GetValue(SourceProperty); }
    set { SetValue(SourceProperty, value); }
}
于 2010-01-06T23:33:43.347 に答える