![](/img/trans.png)
[英]How to refresh custom user control in WPF from code behind or by binding
[英]Accessing WPF Template for Custom Control from Code behind
我试图从代码隐藏的默认模板中访问自定义控件的命名网格。
但是,即使在调用ApplyTemplate()之后,控件的模板似乎也为null。
控件构造器内部是不可能的?
这是代码:
Generic.xaml:
...
<ControlTemplate TargetType="{x:Type local:TimeTableControl}">
<Grid Name="ContentGrid">
</Grid>
</ControlTemplate>
...
TimeTableControl.cs:
public TimeTableControl()
{
ApplyTemplate();
contentGrid = (Grid)(Template.FindName("ContentGrid", this));
//Line above causes null-pointer-exception
...
}
您应该将代码移动到重写的OnApplyTemplate并使用GetTemplateChild方法,如下所示:
public class TimeTableControl {
private Grid contentGrid;
protected override void OnApplyTemplate() {
base.OnApplyTemplate();
contentGrid = GetTemplateChild("ContentGrid") as Grid;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.