部件重命名后,WPF GetTemplateChild返回NULL

时间:2015-09-04 12:50:22

标签: wpf wpf-controls

我有一些代码如下:

[TemplatePart(Name = "okButton", Type = typeof(Button))]
[TemplatePart(Name = "cancelButton", Type = typeof(Button))]
public class ModalPopup : ContentControl, IModalPopup
{
     private Button _okButton;
     private Button _cancelButton;

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

        LoadTemplateParts();
    }

    private void LoadTemplateParts()
    {
        _okButton = GetTemplateChild("okButton") as Button;
        _cancelButton = GetTemplateChild("cancelButton") as Button;
    }

}

还有许多其他模板部件已定义,但我只显示2,它们都运行良好。但是,如果我尝试添加一个新部件(即我想添加一个Apply按钮),GetTemplateChild方法只会为这个新部件返回null。就好像这些模板部件有一个缓存定义,我需要以某种方式清理它!

有人有任何建议吗?

1 个答案:

答案 0 :(得分:0)

为了不浪费别人的宝贵时间: -

这是我刚接触的一个领域,经过一段时间后再次访问我想要一个新的Button - 但是我只创建了新的属性和代码 - 我完全忘记了我需要将新的Button添加到& #39;样式'我的弹出窗口的定义 - doh!