我有两个不同的控件,它们都有一个名为Value的属性。我在两种情况下都使用相同的代码。然而,在一种情况下,我得到绑定错误说"绑定只能用于依赖对象中的依赖属性。
以下是实现依赖项属性的代码
Public Class Calender
Implements INotifyPropertyChanged
Public Shared ValueProperty As DependencyProperty = DependencyProperty.Register("Value", GetType(String), GetType(Calendar))
Public Property Value() As String
Get
If Not TryCast(Me.GetValue(ValueProperty), String) Is Nothing Then
Return TryCast(Me.GetValue(ValueProperty), String)
Else
Return String.Empty
End If
End Get
Set(value As String)
Me.SetValue(ValueProperty, value)
End Set
End Property
Public Event PropertyChanged As PropertyChangedEventHandler _
Implements INotifyPropertyChanged.PropertyChanged
这是我在另一个控件中使用的完全相同的代码。它在该控件中工作正常,但在这种情况下,它不起作用。此外,当我将此Value属性用作
时Value="{Binding MeasuringTapeCalibrationDue,Mode=TwoWay}"
它在XAML编辑器中显示一条波浪线,说" Value属性已经由Calendar"注册。我有上面的代码只注册一次value属性。
答案 0 :(得分:0)
您必须在另一个控件的依赖项属性注册中将GetType(Calendar)
替换为GetType(OtherControl)
:
Public Class OtherControl
Public Shared ValueProperty As DependencyProperty =
DependencyProperty.Register("Value", GetType(String), GetType(OtherControl))