我正在構建一個自定義Web控件,其中包含一個公共屬性,我只想在設計時使用它(即使其在代碼後面不可用)。 的DesignOnly
屬性承諾做到這一點,但是當我設置[DesignOnly(true)]
它沒有任何明顯的效果:DesignOnly屬性不會隱藏運行時的屬性
[Bindable(true)]
[Category("Appearance")]
[DefaultValue(null)]
[Localizable(false)]
[DesignOnly(true)]
public string MyProp
{
get
{
return ViewState["MyProp"] as string;
}
set
{
ViewState["MyProp"] = value;
}
}
仍然出現在智能感知背後的代碼性能。在代碼後面設置一個值作品。在這些方面,行爲就像屬性從未設置過一樣。我已經清理並重建了完整的解決方案。兩次。
我做錯了嗎?那麼你能告訴我什麼纔是正確的方式呢?
非常感謝提前。
謝謝!這很有啓發。因此,我認爲沒有辦法以一種依賴於當前模式(設計/運行時)的方式來控制屬性的實際可用性? – AviJ 2010-01-17 10:41:50
您可以通過使用諸如'[Browsable(false)]'等方法讓大多數設計人員無法使用代碼屬性;您可以通過使用自定義屬性模型來創建* true *設計器屬性,但這是一個高級主題,涉及對TypeDescriptor,PropertyDescriptor,ICustomTypeDescriptor,TypeConverter等的理解 - 非常複雜。 – 2010-01-17 10:54:35