如何在Xceed PropertyGrid for WPF中隐藏子属性?

时间:2019-08-18 14:38:57

标签: c# wpftoolkit propertygrid xceed

我们当前正在使用Xceed PropertyGrid控件来显示应用程序的打印设置。这是我们正在使用的类的摘录:

public class ReportOptions {

    public FontOptions FontOptions { get; } = new FontOptions();
    public PageOptions PageOptions { get; } = new PageOptions();
}

[ExpandableObject]
public class FontOptions {
    public string FontName        { get; set; } = "Times New Roman";
    public double HeadingFontSize { get; set; } = 14.0;
    public double BodyFontSize    { get; set; } = 12.0;
}

[ExpandableObject]
public class PageOptions{

    [ExpandableObject]
    public Thickness Margins { get; set; } = new Thickness(0.5, 1.0, 0.5, 1.0);

    [ExpandableObject]
    public Size      Size    { get; set; } = new Size(8.5,11.0);
}

我们遇到的问题是Size类具有一个只读的IsEmpty属性,我们希望将其隐藏在PropertyGrid中。

enter image description here

由于我们正在使用网格的自动生成的属性,并且由于我们不“拥有” Size类,因此我们不确定如何装饰该属性以将其隐藏。

我们尝试使用PreparePropertyItem,但是PropertyItem.IsVisible是只读的。

那么我们如何隐藏该属性而不必手动定义所有属性? (同样,这只是实际课程的一小部分摘录。

1 个答案:

答案 0 :(得分:0)

您需要Browsable(false)属性才能从PropertyGrid中隐藏某些内容。如果需要在运行时设置属性,则可能需要研究类似DynamicTypeDescriptor