假设我有一个自定义控件,它包装了另一个控件(例如MyCustomButton)。我公开一个名为Content的属性,用于包装内部控件:
为了让消费者绑定到这个属性,我需要为它定义一个DependencyProperty:
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来处理DependencyProperty的PropertyChanged事件,但这样我需要大量的管道代码来保持值同步并防止改变时的无限循环。
更新:我不能仅仅从Button派生,因为我的UserControl有各种其他问题。
有更好的方法吗?