【问题标题】:Silverlight: Dependency property loses value when control is navigated away fromSilverlight:当控件离开时,依赖属性失去价值
【发布时间】:2012-01-11 13:57:24
【问题描述】:

我有一个自定义控件,它有两个依赖属性。它们是这样设置的:

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 是保持设置的字符串。据我所知,这两个设置与其他设置相同。为什么这些会失去价值,而其他的却没有?

【问题讨论】:

    标签: silverlight binding dependency-properties


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2011-05-25
      相关资源
      最近更新 更多