139 lines
6.1 KiB
VB.net
139 lines
6.1 KiB
VB.net
Public Class MyMsgSelect
|
|
|
|
Private ReadOnly MyConverter As MyMsgBoxConverter
|
|
Private ReadOnly Uuid As Integer = GetUuid()
|
|
|
|
Public Sub New(Converter As MyMsgBoxConverter)
|
|
Try
|
|
|
|
InitializeComponent()
|
|
Btn1.Name = Btn1.Name & GetUuid()
|
|
Btn2.Name = Btn2.Name & GetUuid()
|
|
Btn3.Name = Btn3.Name & GetUuid()
|
|
MyConverter = Converter
|
|
LabTitle.Text = Converter.Title
|
|
Btn1.Text = Converter.Button1
|
|
If Converter.IsWarn Then
|
|
Btn1.ColorType = MyButton.ColorState.Red
|
|
LabTitle.SetResourceReference(TextBlock.ForegroundProperty, "ColorBrushRedLight")
|
|
ShapeLine.SetResourceReference(Rectangle.FillProperty, "ColorBrushRedLight")
|
|
End If
|
|
Btn2.Text = Converter.Button2
|
|
Btn3.Text = Converter.Button3
|
|
Btn2.Visibility = If(Converter.Button2 = "", Visibility.Collapsed, Visibility.Visible)
|
|
Btn3.Visibility = If(Converter.Button3 = "", Visibility.Collapsed, Visibility.Visible)
|
|
'添加选择控件
|
|
For Each Selection As IMyRadio In Converter.Content
|
|
PanSelection.Children.Add(Selection)
|
|
AddHandler Selection.Check, AddressOf OnChecked
|
|
If TypeOf Selection Is MyListItem Then
|
|
CType(Selection, MyListItem).Type = MyListItem.CheckType.RadioBox
|
|
CType(Selection, MyListItem).MinHeight = 24
|
|
Else
|
|
CType(Selection, MyRadioBox).MinHeight = 26
|
|
End If
|
|
Next
|
|
|
|
Catch ex As Exception
|
|
Log(ex, "选择弹窗初始化失败", LogLevel.Hint)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub Load(sender As Object, e As EventArgs) Handles MyBase.Loaded
|
|
Try
|
|
|
|
'UI 初始化
|
|
If Btn2.IsVisible AndAlso Not Btn1.ColorType = MyButton.ColorState.Red Then Btn1.ColorType = MyButton.ColorState.Highlight
|
|
ShapeLine.StrokeThickness = GetWPFSize(1)
|
|
Measure(New Size(FrmMain.Width, FrmMain.Height))
|
|
Arrange(New Rect(0, 0, FrmMain.Width, FrmMain.Height))
|
|
If FrmMain.Width - ActualWidth < 20 Then Width = FrmMain.Width - GetWPFSize(2)
|
|
'动画
|
|
AniStart({
|
|
AaColor(FrmMain.PanMsg, Grid.BackgroundProperty, New MyColor(60, 0, 0, 0), 250, , New AniEaseInFluent),
|
|
AaColor(PanBorder, Border.BackgroundProperty, New MyColor(255, 0, 0, 0), 150, , New AniEaseInFluent),
|
|
AaOpacity(EffectShadow, 0.75, 400, 50),
|
|
AaWidth(ShapeLine, ShapeLine.ActualWidth, 250, 100, New AniEaseOutFluent),
|
|
AaOpacity(ShapeLine, 1, 200, 100),
|
|
AaWidth(LabTitle, LabTitle.ActualWidth, 200, 100, New AniEaseOutFluent),
|
|
AaOpacity(LabTitle, 1, 150, 150),
|
|
AaOpacity(PanCaption, 1, 150, 150),
|
|
AaOpacity(Btn1, 1, 150, 100),
|
|
AaOpacity(Btn2, 1, 150, 150),
|
|
AaOpacity(Btn3, 1, 150, 200),
|
|
AaCode(Sub()
|
|
ShapeLine.MinWidth = ShapeLine.ActualWidth
|
|
ShapeLine.HorizontalAlignment = HorizontalAlignment.Stretch
|
|
ShapeLine.Width = Double.NaN
|
|
LabTitle.Width = Double.NaN
|
|
LabTitle.TextTrimming = TextTrimming.CharacterEllipsis
|
|
End Sub, 350)
|
|
}, "MyMsgBox Start " & Uuid)
|
|
'动画初始化
|
|
ShapeLine.Width = 0
|
|
ShapeLine.HorizontalAlignment = HorizontalAlignment.Center
|
|
LabTitle.Width = 0
|
|
LabTitle.Opacity = 0
|
|
LabTitle.TextWrapping = TextWrapping.NoWrap
|
|
PanCaption.Opacity = 0
|
|
'记录日志
|
|
Log("[Control] 选择弹窗:" & LabTitle.Text)
|
|
|
|
Catch ex As Exception
|
|
Log(ex, "选择弹窗加载失败", LogLevel.Hint)
|
|
End Try
|
|
End Sub
|
|
Private Sub Close()
|
|
'结束线程阻塞
|
|
MyConverter.WaitFrame.Continue = False
|
|
Interop.ComponentDispatcher.PopModal()
|
|
'弹窗动画
|
|
LabTitle.TextTrimming = TextTrimming.None
|
|
LabTitle.TextWrapping = TextWrapping.NoWrap
|
|
AniStart({
|
|
AaColor(FrmMain.PanMsg, Grid.BackgroundProperty, New MyColor(-60, 0, 0, 0), 350, , New AniEaseInFluent),
|
|
AaColor(PanBorder, Border.BackgroundProperty, New MyColor(-255, 0, 0, 0), 300, 100, New AniEaseInFluent),
|
|
AaOpacity(EffectShadow, -0.75, 150),
|
|
AaWidth(ShapeLine, -ShapeLine.ActualWidth, 250, , New AniEaseInFluent),
|
|
AaOpacity(ShapeLine, -1, 150, 100),
|
|
AaWidth(LabTitle, -LabTitle.ActualWidth, 250),
|
|
AaOpacity(LabTitle, -1, 200),
|
|
AaOpacity(PanCaption, -1, 200),
|
|
AaOpacity(Btn1, -1, 150),
|
|
AaOpacity(Btn2, -1, 150, 50),
|
|
AaOpacity(Btn3, -1, 150, 100),
|
|
AaCode(Sub() CType(Parent, Grid).Children.Remove(Me), , True)
|
|
}, "MyMsgBox Close " & Uuid)
|
|
End Sub
|
|
|
|
Public Sub Btn1_Click() Handles Btn1.Click
|
|
If MyConverter.IsExited OrElse SelectedIndex = -1 Then Exit Sub
|
|
MyConverter.IsExited = True
|
|
MyConverter.Result = SelectedIndex
|
|
Close()
|
|
End Sub
|
|
Private Sub Btn2_Click() Handles Btn2.Click
|
|
If MyConverter.IsExited Then Exit Sub
|
|
MyConverter.IsExited = True
|
|
MyConverter.Result = Nothing
|
|
Close()
|
|
End Sub
|
|
Private Sub Btn3_Click() Handles Btn3.Click
|
|
If MyConverter.IsExited Then Exit Sub
|
|
MyConverter.IsExited = True
|
|
MyConverter.Result = Nothing
|
|
Close()
|
|
End Sub
|
|
|
|
Private SelectedIndex As Integer = -1
|
|
Private Sub OnChecked(sender As IMyRadio, e As EventArgs)
|
|
Btn1.IsEnabled = True
|
|
SelectedIndex = PanSelection.Children.IndexOf(sender)
|
|
End Sub
|
|
Private Sub Drag(sender As Object, e As MouseButtonEventArgs) Handles PanBorder.MouseLeftButtonDown, LabTitle.MouseLeftButtonDown
|
|
On Error Resume Next
|
|
If e.GetPosition(ShapeLine).Y <= 2 Then FrmMain.DragMove()
|
|
End Sub
|
|
|
|
End Class
|