i am trying to access a named grid inside a default template for a custom control from code behind.
But it seems that the template for the control is null, even after calling ApplyTemplate().
Is that impossible inside the controls constuctor?
Here's the code:
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
...
}
You should move your code into an overridden OnApplyTemplate and use the GetTemplateChild method like so:
public class TimeTableControl {
private Grid contentGrid;
protected override void OnApplyTemplate() {
base.OnApplyTemplate();
contentGrid = GetTemplateChild("ContentGrid") as Grid;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With