我有一个从Control类派生的自定义控件。我想创建另一个控件(例如,按钮)的依赖属性,并将其放置在ControlTemplate中(这样按钮可以在xaml中放置,MyControl的用户可以订阅它的事件等)。有人能告诉我如何做吗?
以下是示例代码:
public class MyControl: Control
{
static MyControl( )
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), new FrameworkPropertyMetadata(typeof(MyControl)));
}
public static readonly DependencyProperty MyButtonProperty =
DependencyProperty.Register("MyButton",
typeof(Button),
typeof(MyControl),
new PropertyMetadata(default(Button)));
public Button MyButton
{
get
{
return (Button) GetValue(MyButtonProperty);
}
set
{
SetValue(MyButtonProperty, value);
}
}
}
xaml:
<ControlTemplate TargetType="{x:Type lib:MyControl}">
<Canvas>
<Border Child="{TemplateBinding MyButton}">
</Border>
</Canvas>
</ControlTemplate>
FindName(partName)
而不是GetTemplateChild(partName)
。 - Konstantin Vasilev