Допустим, у меня есть настраиваемый элемент управления, который обертывает другой элемент управления (например, MyCustomButton). Я открываю свойство Content, которое является оболочкой для внутреннего элемента управления:
public object Content
{
get { return innerControl.Content; }
set { innerControl.Content = value; }
}
Чтобы потребитель мог привязаться к этому свойству, мне нужно определить для него DependencyProperty:
public static DependencyProperty ContentProperty = DependencyProperty.Register("Content", typeof (object), typeof (MyCustomButton));
но теперь мне нужно определение моего свойства, чтобы использовать GetValue / SetValue :
public object Content
{
get { return GetValue(ContentProperty); }
set { SetValue(ContentProperty, value); }
}
поэтому я больше не оборачиваю значение внутреннего элемента управления.
Я могу определить PropertyMetadata для обработки события PropertyChanged в DependencyProperty, но тогда мне понадобится связка связующего кода, чтобы синхронизировать значения и предотвратить бесконечные петли при изменении.
ОБНОВЛЕНИЕ: я не могу просто унаследовать от Button, потому что у моего UserControl есть другие проблемы.
Есть ли лучший способ сделать это?