我正在使用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的内容将在运行时更改。
谢谢。
答案 0 :(得分:0)
在自定义控件中覆盖OnApplyTemplate方法,并将依赖于命名控件的代码放在那里。例如:尝试:
public override void OnApplyTemplate() {
base.OnApplyTemplate();
MyDisplay display = Template.FindName("DisplayInstance", this);
}