我有一个具有两个依赖项属性的自定义控件。它们设置如下:
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是保持设置的字符串。据我所知,这两个设置与其他设置相同。当其他人不这样做时,为什么这些会失去价值呢?
答案 0 :(得分:1)
当导航发生时,Silverlight会从树中删除旧页面并添加刚刚创建的新页面。因此,当您导航到URI
并返回时,您将获得一个处于默认状态的新控件。
您应该将控件的状态存储在除了它们之外的某个位置。它可以是内存中对象或服务器端数据库表。选择取决于您的要求。可能最好和通用的方法是应用MVVM模式。