Public Module GridNavigationManager Private _forwardStack As New Stack(Of INavigation)() Private _backwardStack As New Stack(Of INavigation)() Private _isRunning As Boolean = False Sub New() End Sub ''' ''' 是否正在执行导航操作 ''' ''' Public ReadOnly Property IsRunning As Boolean Get Return _isRunning End Get End Property ''' ''' 是否可以后退 ''' ''' Public ReadOnly Property CanForward As Boolean Get Return _forwardStack.Count > 0 End Get End Property ''' ''' 是否可以前进 ''' ''' ''' Public ReadOnly Property CanBackward As Boolean Get Return _backwardStack.Count > 0 End Get End Property ''' ''' 添加导航 ''' 导航 ''' Public Sub Append(navigation As INavigation) _backwardStack.Push(navigation) _forwardStack.Clear() End Sub ''' ''' ''' Public Sub RemoveForward() If CanBackward Then _backwardStack.Pop() End Sub Public Sub Clear() _forwardStack.Clear() _backwardStack.Clear() End Sub Public Sub Forward() If Not CanForward Then Return Dim navigation As INavigation = _forwardStack.Pop() _backwardStack.Push(navigation) _isRunning = True navigation.Forward() _isRunning = False End Sub Public Sub Backward() If Not CanBackward Then Return Dim navigation As INavigation = _backwardStack.Pop() _forwardStack.Push(navigation) _isRunning = True navigation.Backward() _isRunning = False End Sub End Module