我有一些简单的依赖属性不起作用。我查看了它们,查看了我过去使用过的代码,但我不确定它们为什么不起作用。
我有一个扩展 UserControl 的自定义基类 (MyBaseControl),然后我的自定义 UI 控件在其上进行扩展。例如,MyCustomControl 扩展了 MyBaseControl。
MyCustomControl XAML 很简单:
<StackPanel>
<Image Source="{Binding Icon}" />
<TextBlock Text="{Binding Blurb}" />
</StackPanel>
MyCustomControl 代码如下所示:
public partial class MyCustomControl: MyBaseControl
{
//public static readonly DependencyProperty IconProperty = Image.SourceProperty.AddOwner(typeof(MyCustomControl));
//public static readonly DependencyProperty BlurbProperty = TextBlock.TextProperty.AddOwner(typeof(MyCustomControl));
public static readonly DependencyProperty IconProperty =
DependencyProperty.Register(
"Icon",
typeof(ImageSource),
typeof(MyCustomControl),
new PropertyMetadata(null));
public static readonly DependencyProperty BlurbProperty =
DependencyProperty.Register(
"Blurb",
typeof(String),
typeof(MyCustomControl),
new PropertyMetadata(null));
public MyCustomControl() : base()
{
InitializeComponent();
}
#region Properties
public ImageSource Icon
{
get { return (ImageSource)GetValue(IconProperty); }
set { SetValue(IconProperty, value); }
}
public String Blurb
{
get { return (String)GetValue(BlurbProperty); }
set { SetValue(BlurbProperty, value); }
}
#endregion Properties
}
请注意,我尝试了几种不同的方法来定义DependencyProperty
. 两者都不起作用。
我通过以下方式调用我的控件:
<ctrl:MyCustomControl Height="240" VerticalAlignment="Center" HorizontalAlignment="Center" Width="320" Blurb="Slide Show" Icon="pack://application:,,,/Resources/photo_scenery.png" />
如果我直接在 XAML 中设置 Source 或 Text,它们会显示得很好。绑定只是不想正常工作。
我错过了什么不允许我的绑定通过?
感谢您的任何帮助!
更新:我已经根据我尝试过的评论和其他更改更新了代码。