在“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没有指定。因此,我需要在设计时禁用此代码。
我该怎么做?
可能在某处有另一个类叫做DesignerProperties它干扰了你真正想要使用的那个。如何:
if (System.ComponentModel.DesignerProperties.IsInDesignTool) return;
我认为正确的代码是,
if (DesignerProperties.GetIsInDesignTool(this)) return;