我已经下载了一个示例解决方案,该解决方案使用继承自usercontrol但没有.xaml设计文件的控件的DefaultStyleKeyProperty的OverrideMetadata方法,并且它将成为具有类似或几乎相同布局的其他子控件的基本控件。 代码可以在Example找到。
现在我尝试从基类访问位于其覆盖样式的内容模板中的按钮,其名称为" btnTest1",但我找不到执行此操作的方法。 / p>
我想知道是否有一种方法可以在基类构造函数或子类构造函数中找到控件(可能在调用InitializeComponent之后),因为我需要稍后在代码隐藏中访问它。 / p>
提前致谢。
大卫。
答案 0 :(得分:0)
这有一种风格模式。
在您的control.cs文件中,您要覆盖OnApplyTemplate
protected override void OnApplyTemplate(){
Button yourButtonControl = GetTemplateChild("TheNameOfYourButton") as Button;
base.OnApplyTemplate();
}
如果您想要遵循Microsoft模式,那么首先您需要为控件命名" PART_SomethingButton
"。这只是意味着它是模板的一部分。
然后在Control.cs
课程中,在控件上添加attribute
。
Button
[TemplatePart(Name = "PART_SomethingButton", Type = typeof(Button))]
public class MyControl : Control
[TemplatePart(Name = "PART_SomethingButton", Type = typeof(Button))]
public class MyControl : Control{
private Button _partSomethingButton;
}