Silverlight: свойство Dependency теряет значение, когда элемент управления перемещен из - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть пользовательский элемент управления, который имеет два свойства зависимости. Они установлены так:

Public Shared ReadOnly ValueBindingProperty As DependencyProperty = _
DependencyProperty.Register("ValueBinding", GetType(String), GetType(HomePageControl), New PropertyMetadata(String.Empty))

Public Property ValueBinding As String
        Get
            Return DirectCast(Me.GetValue(HomePageControl.ValueBindingProperty), String)
        End Get
        Set(value As String)
            Me.SetValue(HomePageControl.ValueBindingProperty, value)
        End Set
End Property

Я оцениваю их в PropertyChangedCallback другого DP, как это:

Dim hpc As HomePageControl = DirectCast(d, HomePageControl)
Dim valueBindingString as String = hpc.ValueBinding

А потом я использую его там, где мне это нужно.

Значение указывается при первой загрузке страницы и загрузке элемента управления. Как только я ухожу со страницы - используя навигацию Silverlight, загружая новый «вид» во фрейм - значение исчезает, и когда я возвращаюсь к странице / виду, элемент управления со значением равен значению по умолчанию, а не тому, что оно есть. установить в XAML. Что случилось со значением?

У меня есть другие DP, которые являются строками, которые остаются установленными. Насколько я могу судить, эти два установлены так же, как и другие. Почему они теряют свою ценность, а другие нет?

1 Ответ

1 голос
/ 03 декабря 2011

Когда происходит навигация, Silverlight удаляет старую страницу из дерева и добавляет новую, только что созданную. Поэтому, когда вы переходите к URI и возвращаетесь, вы получаете новый элемент управления, который находится в состоянии по умолчанию.

Вы должны хранить состояние элементов управления где-то кроме них. Это может быть объект в памяти или таблица базы данных на стороне сервера. Выбор зависит от ваших требований. Вероятно, лучший и универсальный подход - применение шаблона MVVM.

...