Прежде всего я покажу вам, как настроить ваш элемент управления Derived, чтобы справиться с этим.Вам нужно сделать две вещи, во-первых, вам нужно реализовать INotifyPropertyChanged
, а во-вторых, добавить привязку в пользовательский элемент управления.
MyControl Xaml: -
<me:MyBaseControl.Header>
<TextBlock Name="headerItem" />
</me:MyBaseControl.Header>
Код MyControl:
public partial class MyControl : MyBaseControl, INotifyPropertyChanged
{
public MyControl ()
{
InitializeComponent();
headerItem.SetBinding(TextBlock.TextProperty, new Binding("Text") { Source = this });
}
string _text;
public string Text
{
get { return _text; }
set { _text = value; NotifyPropertyChanged("Text"); }
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
void NotifyPropertyChanged(string name)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
#endregion
}
Это должно заставить вас работать. Однако , как только вы почувствуете, что вам нужно унаследовать класс на основе UserControl, вы должны сделать шаг назад и спросить, должны ли базовые и производные элементы быть шаблонными элементами управления.Если у меня будет время, я попытаюсь добавить версию вашего кода с точки зрения шаблонных элементов управления.