У меня довольно простой сценарий, который я не могу заставить работать правильно. У меня есть 2 представления, CarView и CarWindowView (дочернее окно) с соответствующими ViewModels. В моем CarView у меня есть EditButton, который открывает CarWindowView (дочернее окно), где я могу редактировать поля объекта Car.
Моя проблема в том, что метод DisplayModule в моем CarWindowView ViewModel вызывается слишком много раз ... Когда я нажимаю кнопку редактирования первый раз, когда вызывается один раз, второй раз вызывается twince, в третий раз вызывается 3 раза и так форт ...!
Конструктор CarView ViewModel:
Public Sub New(ByVal eventAggregator As IEventAggregator, ByVal con As IUnityContainer, ByVal mgr As ICarManager, ByVal CarService As ICarService)
_Container = con
_CarManager = mgr
_EventAggregator = eventAggregator
'Create the DelegateCommands
NewBtnClick = New DelegateCommand(Of Object)(AddressOf HandleNewCarBtnClick)
EditBtnClick = New DelegateCommand(Of Object)(AddressOf HandleEditCarBtnClick)
End Sub
CarView ViewModel Метод HandleEditCarBtnClick:
Private Sub HandleEditCarBtnClick()
Dim view = New CarWindowView
Dim viewModel = _Container.Resolve(Of CarWindowViewModel)()
viewModel.CurrentDomainContext = DomainContext
viewModel.CurrentItem = CurrentItem
viewModel.IsEnabled = False
view.ApplyModel(viewModel)
view.Show()
_EventAggregator.GetEvent(Of CarCollectionEvent)().Publish(EditObject)
End Sub
Конструктор CarWindowView ViewModel:
Public Sub New(ByVal eventAggregator As IEventAggregator, ByVal con As IUnityContainer, ByVal mgr As ICarManager, ByVal CarService As ICarService)
_Container = con
_CarManager = mgr
_EventAggregator = eventAggregator
_EventAggregator.GetEvent(Of CarCollectionEvent).Subscribe(AddressOf DisplayModule)
End Sub
CarWindowView ViewModel Метод DisplayModule (этот метод вызывается слишком много раз):
Public Sub DisplayModule(ByVal param As String)
If param = EditObject Then
IsInEditMode = True
' Logic removed for display reasons here. This logic breaks because it's called too many times.
End If
End Sub
Итак, я не могу понять, как у меня может быть только EventAggregator для хранения только одного клика, а не всего моего клика по кнопке Edit. Извините, если это не очень хорошо объяснено! Помощь оценена !!