自定义用户控件的自定义 属性 在重建期间被重置

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