我有一些簡單的依賴屬性不工作。我查看過他們,查看了我過去使用的代碼,但我不確定他們爲什麼不工作。DependencyProperty不工作在自定義UserControl
我有一個自定義的基類(MyBaseControl),它擴展了UserControl,然後我的自定義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設置源或文本,它們顯示了就好了。綁定只是不想正常工作。
我錯過了什麼,不允許我的綁定通過?
謝謝你的幫助!
更新:我更新了基於評論和我試過的其他更改的代碼。
謝謝RV1987。我準備在空中搖擺我的拳頭,因爲我的代碼看起來至少有兩個問題。我做了上述改變,但仍然沒有看到我的形象。 – 2012-07-19 18:17:37
我已經更新了答案。您需要爲您的綁定指定relativeSource。 – 2012-07-19 18:24:00
綁定上的RelativeSource做到了。謝謝!我將需要重新閱讀所有這些內容 - 因爲我不瞭解他們的需求,但現在它仍然有效!再次感謝! – 2012-07-19 18:27:46