[英]C# WFP Find control in control template of a control with override DefaultStyleKeyProperty
我下载了一个示例解决方案,该示例解决方案使用控件的DefaultStyleKeyProperty的OverrideMetadata方法,该控件继承自usercontrol但不具有.xaml设计文件,并且它将用作具有相似或几乎相同布局的其他子控件的基本控件。 该代码可以在这里找到实例 。
现在,我试图从基类访问位于其重写样式的内容模板中的按钮,该按钮的名称为“ btnTest1”,但我找不到执行此操作的方法。
我想知道是否有一种方法可以在基类构造函数或子类构造函数中找到控件(也许在调用InitializeComponent之后),因为稍后需要在代码后面访问它。
提前致谢。
大卫。
有一个样式模式。
您要在control.cs文件中覆盖OnApplyTemplate
protected override void OnApplyTemplate(){
Button yourButtonControl = GetTemplateChild("TheNameOfYourButton") as Button;
base.OnApplyTemplate();
}
如果要遵循Microsoft模式,则首先需要将控件命名为“ PART_SomethingButton
”。 这只是意味着它是模板部分。
然后在Control.cs
类中,在Control上添加一个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;
}
。
[TemplatePart(Name = "PART_SomethingButton", Type = typeof(Button))]
public class MyControl : Control{
private Button _partSomethingButton;
protected override void OnApplyTemplate(){
_partSomethingButton = GetTemplateChild("PART_SomethingButton") as Button;
base.OnApplyTemplate();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.