繁体   English   中英

从后面的代码访问自定义控件的WPF模板

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM