Доступ к шаблону WPF для пользовательского контроля из кода - PullRequest
4 голосов
/ 27 апреля 2010

Я пытаюсь получить доступ к именованной сетке внутри шаблона по умолчанию для пользовательского элемента управления из кода позади.
Но кажется, что шаблон для элемента управления является нулевым, даже после вызова ApplyTemplate ().
Разве это невозможно внутри конструктора элементов управления?
Вот код:

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
     ...
}

1 Ответ

10 голосов
/ 27 апреля 2010

Вы должны переместить свой код в переопределенный OnApplyTemplate и использовать метод GetTemplateChild следующим образом:

public class TimeTableControl {

    private Grid contentGrid;

    protected override void OnApplyTemplate() {

        base.OnApplyTemplate();

        contentGrid = GetTemplateChild("ContentGrid") as Grid;

    }

}
...