Silverlight:当导航控件离开时,依赖属性会丢失值

时间:2011-12-02 14:45:03

标签: silverlight binding dependency-properties

我有一个具有两个依赖项属性的自定义控件。它们设置如下:

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

我在另一个DP的PropertyChangedCallback中评估它们,如下所示:

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

然后我在需要的地方使用它。

第一次加载页面并加载控件时,该值就存在。一旦我离开页面 - 使用Silverlight导航将新的“视图”加载到框架中 - 值消失,当我返回到控件所在的页面/视图时,值等于默认值而不是它是什么设置为xaml。这个价值发生了什么变化?

我有其他DP是保持设置的字符串。据我所知,这两个设置与其他设置相同。当其他人不这样做时,为什么这些会失去价值呢?

1 个答案:

答案 0 :(得分:1)

当导航发生时,Silverlight会从树中删除旧页面并添加刚刚创建的新页面。因此,当您导航到URI并返回时,您将获得一个处于默认状态的新控件。

您应该将控件的状态存储在除了它们之外的某个位置。它可以是内存中对象或服务器端数据库表。选择取决于您的要求。可能最好和通用的方法是应用MVVM模式。