在“onapplytemplate”中检测设计模式方法-自定义控件

本文关键字:设计模式 方法 自定义控件 检测 onapplytemplate | 更新日期: 2023-09-27 18:13:45

以下是我的OnApplyTemplate的外观:

public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();
            if (DesignerProperties.IsInDesignTool) return;
            this.partTextBox = this.GetTemplateChild(PartTextBox) as TextBox;
            this.partButton = this.GetTemplateChild(PartButton) as Button;
            if (this.partTextBox == null || this.partButton == null)
            {
                throw new NullReferenceException("Template part(s) not available");
            }
            this.partTextBox.LostFocus += this.OnTextBoxLostFocus;
            this.partButton.Click += this.OnButtonClick;
            if (this.DataProvider == null)
            {
                throw new NotSupportedException("DataProvider wasn't specified");
            }

我检查IsInDesignTool的第二行给了我错误,说我不能访问内部类"DesignerProperties"。

基本上发生的事情是,当我把我的控件从工具栏拖到视图设计它抛出异常,因为DataProvider没有指定。因此,我需要在设计时禁用此代码。

我该怎么做?

在“onapplytemplate”中检测设计模式方法-自定义控件

可能在某处有另一个类叫做DesignerProperties它干扰了你真正想要使用的那个。如何:

if (System.ComponentModel.DesignerProperties.IsInDesignTool) return;

我认为正确的代码是,

            if (DesignerProperties.GetIsInDesignTool(this)) return;