自定义用户控件的自定义 属性 在重建期间被重置
Custom Property of a Custom User Control gets reset during rebuild
我有以下属性
[DefaultValue(true), Category("Behavior")]
public bool EnableBinding { get; set; }
[DefaultValue(false), Category("Behavior")]
public bool NeedApprove { get; set; }
当使用设计器更改并保存然后重建时,您通过设计器设置的新值将仅保留 属性 NeedApprove。 EnableBinding 总是重置为 false。
尝试过
1) DesignerSerializationVisibility 属性,但没有用!
- 可见
- 隐藏
- 内容
2) 将自动 属性 转换为完整 属性
这奏效了。但为什么?如果不转换为完整的 属性,我们不能实现这一点吗?
您应该在自定义 user-control 构造函数中为 EnableBinding 属性 分配初始值:
public partial class CustomUserControl : UserControl {
public CustomUserControl() {
InitializeComponent();
EnableBinding = true; // !!!
}
[DefaultValue(true), Category("Behavior")]
public bool EnableBinding { get; set; }
[DefaultValue(false), Category("Behavior")]
public bool NeedApprove { get; set; }
}
否则在反序列化过程中它将始终初始化为 false
。
我有以下属性
[DefaultValue(true), Category("Behavior")]
public bool EnableBinding { get; set; }
[DefaultValue(false), Category("Behavior")]
public bool NeedApprove { get; set; }
当使用设计器更改并保存然后重建时,您通过设计器设置的新值将仅保留 属性 NeedApprove。 EnableBinding 总是重置为 false。
尝试过
1) DesignerSerializationVisibility 属性,但没有用!
- 可见
- 隐藏
- 内容
2) 将自动 属性 转换为完整 属性 这奏效了。但为什么?如果不转换为完整的 属性,我们不能实现这一点吗?
您应该在自定义 user-control 构造函数中为 EnableBinding 属性 分配初始值:
public partial class CustomUserControl : UserControl {
public CustomUserControl() {
InitializeComponent();
EnableBinding = true; // !!!
}
[DefaultValue(true), Category("Behavior")]
public bool EnableBinding { get; set; }
[DefaultValue(false), Category("Behavior")]
public bool NeedApprove { get; set; }
}
否则在反序列化过程中它将始终初始化为 false
。