以下声明一个属性,当属性改变前后时候,触发事件,如果ICON为当前的ICON则不改变属性,也不触发事件。
Public Property [Icon]() As Icon
Get
Return _icon
End Get
Set(ByVal Value As Icon)
If Not (_icon Is Value) Then
OnPropertyChanging([Property].Icon)
_icon = Value
OnPropertyChanged([Property].Icon)
End If
End Set
以上用IS来判断可以
如果用EQUALS来判断呢?可没有
奇怪的是ICON本身没有EQUALS方法,当是它的CLONE却有EQUALS方法,查MSDN没有找到。.
下面的代码就是劣质的典型:哈哈!
如下:
Public Property Icon() As Icon
Get
Return _icon
End Get
Set(ByVal Value As Icon)
If _icon Is Nothing Then
OnPropertyChanging([Property].Icon)
_icon = Value
OnPropertyChanged([Property].Icon)
Return
End If
If Not (_icon.Equals(Value)) Then
OnPropertyChanging([Property].Icon)
_icon = Value
OnPropertyChanged([Property].Icon)
End If
End Set
End Property
-----------------------------------------------------------------
经Ninputer(装配脑袋) 的提醒:
Icon是有Equals方法的,但VB默认将它隐藏,除非他由你自己编写并显式继承自Object。这完全是IDE的问题,你可以写Icon.Equals,虽然不自动弹出,但绝对没有任何问题,放心写吧。