这似乎有点小题大做设置可空类型的值和执行INotifyPropertyChanged。有没有更好的方法来做到这一点?可空类型和属性INotifyPropertyChanged的
Private _WorkPhone As Long?
Public Property [WorkPhone]() As Long?
Get
Return _WorkPhone
End Get
Set(ByVal value As Long?)
If value.HasValue = False Then
If _WorkPhone.HasValue = True Then
MyBase.RaisePropertyChanging("WorkPhone")
_WorkPhone = Nothing
MyBase.MarkDirty()
MyBase.RaisePropertyChanged("WorkPhone")
End If
Else
If _WorkPhone.HasValue Then
If _WorkPhone.Value <> value.Value Then
MyBase.RaisePropertyChanging("WorkPhone")
_WorkPhone = value
MyBase.MarkDirty()
MyBase.RaisePropertyChanged("WorkPhone")
End If
Else
MyBase.RaisePropertyChanging("WorkPhone")
_WorkPhone = value
MyBase.MarkDirty()
End If
MyBase.RaisePropertyChanged("WorkPhone")
End If
End Set
End Property
我试着用简单的代码,但我对MyBase.RaisePropertyChanging(“办公电话”)断点从不打,和值不会改变。
If _WorkPhone <> value Then
MyBase.RaisePropertyChanging("WorkPhone")
_WorkPhone = value
MyBase.MarkDirty()
MyBase.RaisePropertyChanged("WorkPhone")
End If
这正是我所用的代码,但在从asp.net回发,它没有得到到第一mybase.raisepropertychanging电话。这不是设定价值,因此是复杂的逻辑。 – 2010-01-17 15:55:43
@Rick Ratayczak:什么是_workPhone'的'在这种情况下,价值观和'value'?除非我们都忽视了一些微妙的东西,否则上述内容应该是正确的。 – jason 2010-01-17 16:03:25
_workphone.hasvalue = false,并且value.hasvalue =真 我传递一个电话号码,一个属性没有。 – 2010-01-17 16:04:45