获取并修改ControlTemplate中的控件

时间:2012-05-11 01:10:56

标签: wpf xaml controltemplate

我正在使用xaml和ControlTemplate,如下所示:

<ControlTemplate TargetType="{x:Type local:MyControl}" x:Key="MyControlTemplate">

    <Grid Background="Transparent" Name="DisplayGrid"  >


        <local:MyDisplay x:Name="DisplayInstance" />
        <ContentPresenter   />


     </Grid>

</ControlTemplate>

代码:

public class MyControl : UserControl
{

    ....
    ....
    ....
    public MyControl()
    {
         Template = (ControlTemplate)Resources["MyControlTemplate"];

         MyDisplay display = Template.FindName("DisplayInstance", this);
         // It return null
    }


}

我想在模板中设置“DisplayInstance”。 我尝试了官方方法(使用Template.FindName(string,FrameworkElement)),但它总是返回null。

那么,我该如何获取和修改ControlTemplate / Xaml中的“DisplayInstance”和任何其他控件?因此,ControlTemplate的内容将在运行时更改。

谢谢。

1 个答案:

答案 0 :(得分:0)

在自定义控件中覆盖OnApplyTemplate方法,并将依赖于命名控件的代码放在那里。例如:尝试:

public override void OnApplyTemplate() {
        base.OnApplyTemplate();

        MyDisplay display = Template.FindName("DisplayInstance", this); 
    }