是否可以在 属性 上动态设置 [DesignerSerializationVisibility] 属性?
Is it possible to set [DesignerSerializationVisibility] attribute on property dynamically?
我正在使用 Visual Studio 2013 和
我有以下枚举和属性:
public enum MoreButtonIcon
{
Default,
Calendar,
Clock
}
[DefaultValue(false)]
public bool UseCustomButtonIcon
{
get;
set;
}
public MoreButtonIcon CustomButtonIcon
{
get;
set;
}
我希望 属性“CustomButtonIcon”仅在“UseCustomButtonIcon”为真时出现在设计器中。否则“CustomButtonIcon”应该被隐藏,或者至少被禁用。
是否可以设置:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
属性 动态属性?
我假设您制作了一个自定义控件。就是这样,你不能真正动态地做到这一点,或者换句话说,用设计师的术语 - 运行时。但是您可以做的是在您的 CustomButtonIcon 属性:
上添加一个检查
enum MoreButtonIcon
{
Default,
Calendar,
Clock,
UNKNOWN
}
private MoreButtonIcon _customButtonIcon = MoreButtonIcon.UNKNOWN;
public MoreButtonIcon CustomButtonIcon
{
get => _customButtonIcon;
set
{
_customButtonIcon = UseCustomButtonIcon ? value : MoreButtonIcon.UNKNOWN;
if (DesignMode) Refresh();
}
}
不,那是不可能的,但您可以为您的属性添加验证:
private MoreButtonIcon customButtonIcon;
public MoreButtonIcon CustomButtonIcon
{
get { return this.customButtonIcon; }
set
{
if(!this.UseCustomButtonIcon)
throw new Exception("UseCustomButtonIcon is false!");
this.customButtonIcon = value;
}
}
我正在使用 Visual Studio 2013 和 我有以下枚举和属性:
public enum MoreButtonIcon
{
Default,
Calendar,
Clock
}
[DefaultValue(false)]
public bool UseCustomButtonIcon
{
get;
set;
}
public MoreButtonIcon CustomButtonIcon
{
get;
set;
}
我希望 属性“CustomButtonIcon”仅在“UseCustomButtonIcon”为真时出现在设计器中。否则“CustomButtonIcon”应该被隐藏,或者至少被禁用。
是否可以设置: [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 属性 动态属性?
我假设您制作了一个自定义控件。就是这样,你不能真正动态地做到这一点,或者换句话说,用设计师的术语 - 运行时。但是您可以做的是在您的 CustomButtonIcon 属性:
上添加一个检查 enum MoreButtonIcon
{
Default,
Calendar,
Clock,
UNKNOWN
}
private MoreButtonIcon _customButtonIcon = MoreButtonIcon.UNKNOWN;
public MoreButtonIcon CustomButtonIcon
{
get => _customButtonIcon;
set
{
_customButtonIcon = UseCustomButtonIcon ? value : MoreButtonIcon.UNKNOWN;
if (DesignMode) Refresh();
}
}
不,那是不可能的,但您可以为您的属性添加验证:
private MoreButtonIcon customButtonIcon;
public MoreButtonIcon CustomButtonIcon
{
get { return this.customButtonIcon; }
set
{
if(!this.UseCustomButtonIcon)
throw new Exception("UseCustomButtonIcon is false!");
this.customButtonIcon = value;
}
}