| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- Public Class PageInstanceLeft
- Implements IRefreshable
- ''' <summary>
- ''' 当前显示设置的 MC 版本。
- ''' </summary>
- Public Shared Instance As McInstance = Nothing
- Public Sub RefreshModDisabled() Handles Me.Loaded
- If Instance IsNot Nothing AndAlso Instance.Modable Then
- ItemMod.Visibility = Visibility.Visible
- ItemModDisabled.Visibility = Visibility.Collapsed
- Else
- ItemMod.Visibility = Visibility.Collapsed
- ItemModDisabled.Visibility = Visibility.Visible
- End If
- End Sub
- #Region "页面切换"
- ''' <summary>
- ''' 当前页面的编号。从 0 开始计算。
- ''' </summary>
- Public PageID As FormMain.PageSubType = FormMain.PageSubType.Default
- ''' <summary>
- ''' 勾选事件改变页面。
- ''' </summary>
- Private Sub PageCheck(sender As FrameworkElement, e As RouteEventArgs) Handles ItemOverall.Check, ItemMod.Check, ItemModDisabled.Check, ItemSetup.Check, ItemExport.Check
- '尚未初始化控件属性时,sender.Tag 为 Nothing,会导致切换到页面 0
- '若使用 IsLoaded,则会导致模拟点击不被执行(模拟点击切换页面时,控件的 IsLoaded 为 False)
- If sender.Tag IsNot Nothing Then PageChange(Val(sender.Tag))
- End Sub
- Public Function PageGet(Optional ID As FormMain.PageSubType = -1)
- If ID = -1 Then ID = PageID
- Select Case ID
- Case FormMain.PageSubType.InstanceOverall
- If FrmInstanceOverall Is Nothing Then FrmInstanceOverall = New PageInstanceOverall
- Return FrmInstanceOverall
- Case FormMain.PageSubType.InstanceMod
- If FrmInstanceMod Is Nothing Then FrmInstanceMod = New PageInstanceMod
- Return FrmInstanceMod
- Case FormMain.PageSubType.InstanceModDisabled
- If FrmInstanceModDisabled Is Nothing Then FrmInstanceModDisabled = New PageInstanceModDisabled
- Return FrmInstanceModDisabled
- Case FormMain.PageSubType.InstanceSetup
- If IsNothing(FrmInstanceSetup) Then FrmInstanceSetup = New PageInstanceSetup
- Return FrmInstanceSetup
- Case FormMain.PageSubType.InstanceExport
- If FrmInstanceExport Is Nothing Then FrmInstanceExport = New PageInstanceExport
- Return FrmInstanceExport
- Case Else
- Throw New Exception("未知的版本设置子页面种类:" & ID)
- End Select
- End Function
- ''' <summary>
- ''' 切换现有页面。
- ''' </summary>
- Public Sub PageChange(ID As FormMain.PageSubType)
- If PageID = ID Then Return
- AniControlEnabled += 1
- Try
- PageChangeRun(PageGet(ID))
- PageID = ID
- Catch ex As Exception
- Logger.Error(ex, $"切换分页面失败(ID {ID})")
- Finally
- AniControlEnabled -= 1
- End Try
- End Sub
- Private Shared Sub PageChangeRun(Target As MyPageRight)
- AniStop("FrmMain PageChangeRight") '停止主页面的右页面切换动画,防止它与本动画一起触发多次 PageOnEnter
- If Target.Parent IsNot Nothing Then Target.SetValue(ContentPresenter.ContentProperty, Nothing)
- FrmMain.PageRight = Target
- CType(FrmMain.PanMainRight.Child, MyPageRight).PageOnExit()
- AniStart({
- AaCode(Sub()
- CType(FrmMain.PanMainRight.Child, MyPageRight).PageOnForceExit()
- FrmMain.PanMainRight.Child = FrmMain.PageRight
- FrmMain.PageRight.Opacity = 0
- End Sub, 130),
- AaCode(Sub()
- '延迟触发页面通用动画,以使得在 Loaded 事件中加载的控件得以处理
- FrmMain.PageRight.Opacity = 1
- FrmMain.PageRight.PageOnEnter()
- End Sub, 30, True)
- }, "PageLeft PageChange")
- End Sub
- #End Region
- Public Sub Refresh(sender As Object, e As EventArgs) '由边栏按钮匿名调用
- Refresh(Val(sender.Tag))
- End Sub
- Public Sub Refresh() Implements IRefreshable.Refresh
- Refresh(FrmMain.PageCurrentSub)
- End Sub
- Public Sub Refresh(SubType As FormMain.PageSubType)
- Select Case SubType
- Case FormMain.PageSubType.InstanceMod
- PageInstanceMod.Refresh()
- ItemMod.Checked = True
- Case FormMain.PageSubType.InstanceExport
- If FrmInstanceExport IsNot Nothing Then FrmInstanceExport.RefreshAll()
- ItemExport.Checked = True
- End Select
- End Sub
- Public Sub Reset(sender As Object, e As EventArgs)
- If MyMsgBox("是否要初始化该版本的版本独立设置?该操作不可撤销。", "初始化确认",, "取消", IsWarn:=True) = 1 Then
- If IsNothing(FrmInstanceSetup) Then FrmInstanceSetup = New PageInstanceSetup
- FrmInstanceSetup.Reset()
- ItemSetup.Checked = True
- End If
- End Sub
- End Class
|