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但我仍在调查中。

编辑:希望你不介意在你问了差不多一年后得到答案,+/- 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 回答