Как сохранить значение свойства только для чтения в PropertyGrid - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть собственный класс:

[TypeConverter(typeof(ExpandableObjectConverter))]
public class CustomClass
{
    public int State { get; set; }
}

Свойство только для чтения:

public class MyControl : UserControl
{
    public CustomClass MyProperty { get; } = new CustomClass();
}

Свойство отображается и редактируется в окне свойств.

PropertyGrid

Но значение не сохраняется , если открыть конструктор заново, оно восстанавливается.

Я думаю, что для дизайнера несложно сгенерировать кодкак:

myControl.MyProperty.State = 1;

Как сделать свойство readonly сохранным?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

После нескольких дней поиска я нахожу очень простое решение:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public CustomClass MyProperty { get; } = new CustomClass();
0 голосов
/ 16 февраля 2019

вы можете использовать два разных свойства с полем поддержки.Проверьте мой ответ ниже с ReadOnly Атрибутом

[ReadOnly(true)]
public int ReadOnlyStateProp
{
    get
    {
        return _ReadOnlyState;
    }
    set
    {
        _ReadOnlyState = value;
    }
}

public int ReadOnlyState
{
    get
    {
        return _ReadOnlyState;
    }
    set
    {
        _ReadOnlyState = value;
    }
}

, теперь вы можете использовать ReadOnlyStateProp для окна свойств и ReadOnlyState в редактируемом контексте.

...