/
NonPersistentObjectActivatorController.vb
53 lines (51 loc) · 2.28 KB
/
NonPersistentObjectActivatorController.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Model
Imports DevExpress.ExpressApp.SystemModule
Imports NonPersistentObjectsDemo.Module.BusinessObjects
Namespace NonPersistentObjectsDemo.Module.Controllers
Public Class NonPersistentObjectActivatorController
Inherits WindowController
Private showNavigationItemController As ShowNavigationItemController
Public Sub New()
TargetWindowType = WindowType.Main
End Sub
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
showNavigationItemController = Frame.GetController(Of ShowNavigationItemController)()
If showNavigationItemController IsNot Nothing Then
AddHandler showNavigationItemController.CustomShowNavigationItem, AddressOf ShowNavigationItemController_CustomShowNavigationItem
End If
End Sub
Protected Overrides Sub OnDeactivated()
If showNavigationItemController IsNot Nothing Then
RemoveHandler showNavigationItemController.CustomShowNavigationItem, AddressOf ShowNavigationItemController_CustomShowNavigationItem
End If
MyBase.OnDeactivated()
End Sub
Private Sub ShowNavigationItemController_CustomShowNavigationItem(ByVal sender As Object, ByVal e As CustomShowNavigationItemEventArgs)
Dim args = e.ActionArguments
Dim shortcut = TryCast(args.SelectedChoiceActionItem.Data, ViewShortcut)
If shortcut IsNot Nothing Then
Dim model = Application.FindModelView(shortcut.ViewId)
If TypeOf model Is IModelDetailView AndAlso String.IsNullOrEmpty(shortcut.ObjectKey) Then
Dim objectType = DirectCast(model, IModelDetailView).ModelClass.TypeInfo.Type
If GetType(ProductView).IsAssignableFrom(objectType) Then
Dim objectSpace = Application.CreateObjectSpace(objectType)
Dim obj = objectSpace.CreateObject(objectType)
objectSpace.RemoveFromModifiedObjects(obj)
Dim detailView = Application.CreateDetailView(objectSpace, shortcut.ViewId, True, obj)
detailView.ViewEditMode = DevExpress.ExpressApp.Editors.ViewEditMode.Edit
args.ShowViewParameters.CreatedView = detailView
args.ShowViewParameters.TargetWindow = TargetWindow.Current
e.Handled = True
End If
End If
End If
End Sub
End Class
End Namespace