Как хранить вложенные свойства CompositeControl в ViewState

У меня есть составной элемент управления с большим количеством свойств, которые можно использовать для стилизации элемента управления. Я хочу сгруппировать эти свойства, но все же сохранить некоторые свойства в ViewState. Разметка для элемента управления будет выглядеть следующим образом:
например,

<cc:Test id="test">
    <Toolbar Items="add,delete" Enabled="true" />
    <Grid Enabled="true" AllowSort="true" AllowFilter="true" />
</cc:Test>

Мой код выглядит примерно так

<ParseChildren(true)> <PersistChildren(true)> _
Public Class Test Inherits CompositeControl

    Private _grid As New GridStyle();
    <PersistenceMode(PersistenceMode.InnerProperty)> _
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
    Public ReadOnly Property Grid As GridStyle
        Get
            Return _grid;
        End Get
    End Property
End Class

Public Class GridStyle
    private _allowFilter As Boolean = False;
    Public Property AllowFilter As Boolean
        Get
            Return _allowFilter
        End Get
        Set(value As Boolean)
            _allowFilter = value
        End Set
    End Property
End Class


ViewState недоступен из класса GridStyle, поэтому как мне поддерживать состояние свойства AllowFilter в ViewState?


person Chris Herring    schedule 13.03.2009    source источник


Ответы (1)


В вашем настраиваемом элементе управления (или создайте оболочки для стандартных элементов управления, используемых в настраиваемом элементе управления) вам необходимо переопределить SaveViewState и LoadViewState

Это хорошо задокументировано в MSDN и в Интернете в целом.

person user73993    schedule 15.03.2009