2 不同页面上的相同依赖属性
2 identical DependencyProperties on different pages
我有一个名为 H1Property 的 DependencyProperty,声明如下:
Public Shared ReadOnly H1Property As DependencyProperty = DependencyProperty.Register("H1", GetType(String), GetType(Button), Nothing)
Public Property H1() As String
Get
Return DirectCast(GetValue(H1Property), String)
End Get
Set(ByVal value As String)
SetValue(H1Property, value)
End Set
End Property
在第1页,我用它来为带有自定义模板的按钮赋值(例如template1,需要在不同的页面上使用相同的模板,所以它存储在App.xaml中)。我在项目 (page2) 中还有另一个页面,在代码隐藏中具有相同的 H1Property。当我在 page1 上使用 template1 动态添加按钮时,它工作正常,但是当我导航到 page2,然后返回到 page1 并再次生成控件时,新按钮中的值为空。没有错误,只有空字段。
问题是什么?有没有办法只声明一次 DependencyProperty 然后在不同的页面上使用它?
提前致谢。
您可以拥有一个存储公共状态并在页面中引用它的模块
Public Module CommonState
Public ReadOnly H1Property As DependencyProperty = _
DependencyProperty.Register("H1", GetType(String), GetType(Button), Nothing)
End Module
在两个页面上
Public Property H1() As String
Get
Return DirectCast(GetValue(CommonState.H1Property), String)
End Get
Set(ByVal value As String)
SetValue(CommonState.H1Property, value)
End Set
End Property
如果您需要页面本身的 H1Property
,您可以将其包装成 属性
Public Shared ReadOnly Property H1Property() As DependencyProperty
Get
Return CommonState.H1Property
End Get
End Property
我有一个名为 H1Property 的 DependencyProperty,声明如下:
Public Shared ReadOnly H1Property As DependencyProperty = DependencyProperty.Register("H1", GetType(String), GetType(Button), Nothing)
Public Property H1() As String
Get
Return DirectCast(GetValue(H1Property), String)
End Get
Set(ByVal value As String)
SetValue(H1Property, value)
End Set
End Property
在第1页,我用它来为带有自定义模板的按钮赋值(例如template1,需要在不同的页面上使用相同的模板,所以它存储在App.xaml中)。我在项目 (page2) 中还有另一个页面,在代码隐藏中具有相同的 H1Property。当我在 page1 上使用 template1 动态添加按钮时,它工作正常,但是当我导航到 page2,然后返回到 page1 并再次生成控件时,新按钮中的值为空。没有错误,只有空字段。
问题是什么?有没有办法只声明一次 DependencyProperty 然后在不同的页面上使用它?
提前致谢。
您可以拥有一个存储公共状态并在页面中引用它的模块
Public Module CommonState
Public ReadOnly H1Property As DependencyProperty = _
DependencyProperty.Register("H1", GetType(String), GetType(Button), Nothing)
End Module
在两个页面上
Public Property H1() As String
Get
Return DirectCast(GetValue(CommonState.H1Property), String)
End Get
Set(ByVal value As String)
SetValue(CommonState.H1Property, value)
End Set
End Property
如果您需要页面本身的 H1Property
,您可以将其包装成 属性
Public Shared ReadOnly Property H1Property() As DependencyProperty
Get
Return CommonState.H1Property
End Get
End Property