我有一个使用mvvm的多项目wpf应用程序。应用程序使用实体框架来派生其数据,数据模型是使用Devart的Entity Developer构建的,各个实体都实现了INotifyPropertyChanged和Changing。
对于其中一个实体在DataModel项目中,我创建了一个具有特定事件的分部类;
Partial Public Class KeyNumber
Public Event Dirty()
Private Sub OnInvoiceNumberChanged()
IsDirty = True
RaiseEvent Dirty()
End Sub
在引用KeyNumber类的单独项目的viewmodel中,我有以下内容;
Public Class KeyNumberViewModel
Inherits ViewModelBase
Private _isDirty As Boolean
Private _keyNumbers As IList(Of KeyNumber)
Private ReadOnly _entities As EntityClientCache
Private WithEvents kn As KeyNumber
''' <summary>
''' Initializes a new instance of the <see cref="KeyNumberViewModel"/> class.
''' </summary>
Public Sub New(ByVal data As FtProContext)
kn = New KeyNumber
_entities = data.ClientCache
_keyNumbers = data.KeyNumbersList
DisplayName = "Key Numbers"
'AddHandler kn.Dirty,AddressOf KeyNumberNotification
End Sub
Private Sub KeyNumberNotification() Handles kn.Dirty
MessageBox.Show("Hi")
End Sub
我在KeyNumber类中的Dirty事件被引发的位置放置了一个断点,每当我在View中更改一个Invonive数字时,KeyNumberViewModel作为其datacontext被命中,但由于某种原因我的测试我放在应该处理Dirty事件的viewmodel处理程序中的消息永远不会被触发。
所有代码编译都没有明确的错误,我可以回复,这表明这是我的一个更基本的错误。
我欢迎一些指示或解释,说明我做错了什么。
由于