当您查看屏幕截图时,这将更有意义。
以下注意“边距”(以绿色突出显示)如何显示“ 0.5,1,0.5,1”,而“子页面选项”(以红色突出显示)如何显示类名称。两者都应用了ExpandableObject
属性。两者都有类型转换器,它们可以转换为字符串,也可以具有隐式运算符转换器。但是,我似乎无法让我的班级在右边显示字符串值。
与“页面选项”(也用红色突出显示)一样,我能做的最接近的事情是覆盖ToString()
,但它是只读的,而“边距”和“页面大小”却是只读的-写。另外,这会影响所有调用ToString()
的事物。
这是SubPageOptions类的更新版本(仍然无效):
[DisplayName("Sub Page Options"), ExpandableObject]
public struct SubPageOptions {
public double A { get; set; }
public double B { get; set; }
public override string ToString()
=> SubPageOptionsConverter.ToString(this);
public static implicit operator SubPageOptions(string value)
=> SubPageOptionsConverter.FromString(value);
public static explicit operator string(SubPageOptions subPageOptions)
=> subPageOptions.ToString();
}
如何隐藏“页面大小”中的“是否为空”?类型为Size
,我不拥有该类型,所以我不知道如何用[Browsable(false)]
装饰该特定属性。