我有一个用户控件,它公开了ImageSource类型的属性。我想在Blend中公开这个属性,以便我可以在Blend中编辑它,而不是在代码中指定图像。
根据我用Google搜索的内容,我添加了一个依赖项属性,并指定了适当的属性来公开Blend中的属性。
我可以在那里看到它并编辑它(作为文本字段)。我想要做的是有一个可用图像资源的下拉列表,以及一个用于加载另一个图像的浏览按钮。换句话说,我希望它的行为类似于'Image'控件的'Source'属性。
编辑顺便说一句,我注意到曝光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;
}
}
答案 0 :(得分:1)
我一直在研究这个问题(减去Blend,再加上在XAML中使用ControlTemplate中的属性。)
就我而言,我已将ImageSource
更改为BitmapSource
。 ImageSource是抽象的,BitmapSource扩展了ImageSource。
然而,有些事情对此并不正确。 Image.Source的类型是ImageSource。无论它是否是抽象的,似乎我应该能够使用ImageSource类型的DependencyProperty。
所以,就我个人而言,我已经与BitmapSource
合作了,但我还在调查。
EDIT2:乔治,我确实使用ImageSource
使用以下内容为我工作:
public static readonly DependencyProperty SourceProperty =
Image.SourceProperty.AddOwner(typeof(MyCustomButton));
public ImageSource Source
{
get { return (ImageSource)GetValue(SourceProperty); }
set { SetValue(SourceProperty, value); }
}