添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
This commit is contained in:
433
MX-PD-盘古 - new/PanGu.DieBonderApp/MainShell/MainView.xaml
Normal file
433
MX-PD-盘古 - new/PanGu.DieBonderApp/MainShell/MainView.xaml
Normal file
@@ -0,0 +1,433 @@
|
||||
<UserControl x:Class="MainShell.MainView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mw="http://www.maxwell-gp.com/"
|
||||
xmlns:custom="clr-namespace:MainShell.Resources.CustomControl"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="650" d:DesignWidth="800">
|
||||
<UserControl.Resources>
|
||||
<ResourceDictionary>
|
||||
<Style x:Key="DashboardPanelBorderStyle" TargetType="Border">
|
||||
<Setter Property="Background" Value="{StaticResource ProcessCardBackgroundBrush}"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource ProcessCardBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="CornerRadius" Value="8"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="DashboardSectionGroupBoxStyle" TargetType="GroupBox" BasedOn="{StaticResource ProcessPageContentGroupBoxStyle}">
|
||||
<Setter Property="Margin" Value="0,0,0,12"/>
|
||||
<Setter Property="Padding" Value="14,16,14,14"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="DashboardCameraBorderStyle" TargetType="Border">
|
||||
<Setter Property="Background" Value="#101418"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource ProcessCardBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="CornerRadius" Value="6"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="DashboardMapBorderStyle" TargetType="Border">
|
||||
<Setter Property="Background" Value="#F8FAFC"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource ProcessDividerBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="CornerRadius" Value="6"/>
|
||||
<Setter Property="Padding" Value="10"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="DashboardMutedTextStyle" TargetType="TextBlock">
|
||||
<Setter Property="Foreground" Value="#6B7280"/>
|
||||
<Setter Property="FontSize" Value="12"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="DashboardReadOnlyTextBoxStyle" TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
|
||||
<Setter Property="IsReadOnly" Value="True"/>
|
||||
<Setter Property="IsReadOnlyCaretVisible" Value="True"/>
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
<Setter Property="Padding" Value="0"/>
|
||||
<Setter Property="Cursor" Value="IBeam"/>
|
||||
<Setter Property="TextWrapping" Value="Wrap"/>
|
||||
<Setter Property="AcceptsReturn" Value="False"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
||||
<Setter Property="HorizontalScrollBarVisibility" Value="Auto"/>
|
||||
<Setter Property="VerticalScrollBarVisibility" Value="Disabled"/>
|
||||
<Setter Property="HorizontalContentAlignment" Value="Left"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="DashboardInfoCardStyle" TargetType="Border">
|
||||
<Setter Property="BorderBrush" Value="{StaticResource ProcessDividerBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="CornerRadius" Value="6"/>
|
||||
<Setter Property="Padding" Value="12,10"/>
|
||||
<Setter Property="Background" Value="#F8FAFC"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="DashboardCountCardStyle" TargetType="Border" BasedOn="{StaticResource DashboardInfoCardStyle}">
|
||||
<Setter Property="Padding" Value="10,8"/>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</UserControl.Resources>
|
||||
|
||||
<Grid Background="{StaticResource ProcessPageBackgroundBrush}" Margin="8">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="280"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="320"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Border Grid.Column="0" Margin="0,0,12,0" Style="{StaticResource DashboardPanelBorderStyle}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Style="{StaticResource ProcessCardHeaderBarStyle}" CornerRadius="8,8,0,0">
|
||||
<TextBlock Text="CAMERA / 相机图像"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Style="{StaticResource ProcessCardHeaderTextStyle}"/>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="1" Margin="10,12,10,0" Style="{StaticResource DashboardCameraBorderStyle}">
|
||||
<Grid>
|
||||
<ContentControl mw:View.Model="{Binding CameraSearchViewModel}"/>
|
||||
<Border HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Margin="0,0,8,8"
|
||||
Background="#660F172A"
|
||||
CornerRadius="3"
|
||||
Padding="6,2">
|
||||
<TextBlock Text="上相机" Opacity="0.9" Foreground="#CBD5E1" FontSize="12"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="2" Margin="10,10,10,0" Style="{StaticResource DashboardCameraBorderStyle}">
|
||||
<Grid>
|
||||
<ContentControl mw:View.Model="{Binding CameraLocateViewModel}"/>
|
||||
<Border HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Margin="0,0,8,8"
|
||||
Background="#660F172A"
|
||||
CornerRadius="3"
|
||||
Padding="6,2">
|
||||
<TextBlock Text="下相机" Opacity="0.9" Foreground="#CBD5E1" FontSize="12"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="3" Margin="10" Style="{StaticResource DashboardCameraBorderStyle}">
|
||||
<Grid>
|
||||
<ContentControl mw:View.Model="{Binding CameraInspectViewModel}"/>
|
||||
<Border HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Margin="0,0,8,8"
|
||||
Background="#660F172A"
|
||||
CornerRadius="3"
|
||||
Padding="6,2">
|
||||
<TextBlock Text="复检相机" Opacity="0.9" Foreground="#CBD5E1" FontSize="12"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Grid Grid.Column="1" Margin="0,0,12,0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<GroupBox Margin="0,0,0,12" Style="{StaticResource DashboardSectionGroupBoxStyle}" Header="MAIN FLOW / 主流程">
|
||||
<custom:FlowStageDisplayControl FlowNodes="{Binding FlowNodes}"/>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Grid.Row="1" Margin="0,0,0,12" Style="{StaticResource DashboardSectionGroupBoxStyle}" Header="WAFER HANDLING / 晶圆上下料">
|
||||
<custom:FlowStageDisplayControl FlowNodes="{Binding WaferFlowNodes}"/>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Grid.Row="2" Margin="0" Style="{StaticResource DashboardSectionGroupBoxStyle}" Header="REAL-TIME MAPPING / 双图展示区">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Style="{StaticResource DashboardInfoCardStyle}" Background="#F6F9FC">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="220"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<Rectangle Width="4" Height="18" Fill="{StaticResource ProcessHeaderAccentBrush}" Margin="0,0,10,0"/>
|
||||
<TextBlock Text="Mapping Progress" Foreground="{StaticResource ProcessTitleForegroundBrush}" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
|
||||
<TextBlock Grid.Column="1" Text="进度:" VerticalAlignment="Center" Margin="0,0,8,0" Style="{StaticResource DashboardMutedTextStyle}"/>
|
||||
<Grid Grid.Column="2" VerticalAlignment="Center">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="52"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ProgressBar Height="14"
|
||||
Margin="0,0,10,0"
|
||||
Minimum="0"
|
||||
Maximum="100"
|
||||
Value="{Binding DashboardState.MappingProgress}"/>
|
||||
<TextBlock Grid.Column="1"
|
||||
Text="{Binding DashboardState.MappingProgress, StringFormat={}{0:F1}%}"
|
||||
VerticalAlignment="Center"
|
||||
HorizontalAlignment="Right"
|
||||
Foreground="{StaticResource ProcessHeaderAccentBrush}"
|
||||
FontWeight="Bold"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Grid Grid.Row="1" Margin="0,12,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="12"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Border Style="{StaticResource DashboardMapBorderStyle}">
|
||||
<custom:DieMapPanelControl Caption="基板 (Substrate) Map 绘图区"
|
||||
MapModel="{Binding SubstrateMapModel}"/>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Column="2" Style="{StaticResource DashboardMapBorderStyle}">
|
||||
<custom:DieMapPanelControl Caption="晶圆 (Wafer) Map 绘图区"
|
||||
MapModel="{Binding WaferMapModel}"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Column="2" Margin="0,6,6,6">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="190"/>
|
||||
<RowDefinition Height="120"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="200"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<GroupBox Header="IDENTIFICATION / 标识" Margin="0,0,0,8" BorderBrush="#C7C7C7" BorderThickness="1">
|
||||
<Grid Margin="8">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Border BorderBrush="#C7C7C7" BorderThickness="1" Background="#EFEFEF" Margin="0,0,0,6">
|
||||
<StackPanel Margin="8,6">
|
||||
<TextBlock Text="产品 ID" Foreground="#6B7280"/>
|
||||
<TextBox Text="{Binding DashboardState.ProductId}"
|
||||
Foreground="#0B4A8B"
|
||||
FontSize="20"
|
||||
Width="Auto"
|
||||
FontWeight="Bold"
|
||||
IsReadOnly="True"
|
||||
IsReadOnlyCaretVisible="True"
|
||||
BorderThickness="0"
|
||||
Background="Transparent"
|
||||
Padding="0"
|
||||
Cursor="IBeam"
|
||||
TextWrapping="Wrap"
|
||||
AcceptsReturn="False"
|
||||
HorizontalAlignment="Stretch"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Disabled"
|
||||
HorizontalContentAlignment="Left"
|
||||
VerticalContentAlignment="Center"
|
||||
ToolTip="{Binding DashboardState.ProductId}"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<Border Grid.Row="1" BorderBrush="#C7C7C7" BorderThickness="1" Background="#EFEFEF">
|
||||
<StackPanel Margin="8,6">
|
||||
<TextBlock Text="芯片 ID" Foreground="#6B7280"/>
|
||||
<TextBox Text="{Binding DashboardState.ChipId}"
|
||||
Foreground="#EA580C"
|
||||
Width="Auto"
|
||||
FontSize="20"
|
||||
FontWeight="Bold"
|
||||
IsReadOnly="True"
|
||||
IsReadOnlyCaretVisible="True"
|
||||
BorderThickness="0"
|
||||
Background="Transparent"
|
||||
Padding="0"
|
||||
Cursor="IBeam"
|
||||
TextWrapping="Wrap"
|
||||
AcceptsReturn="False"
|
||||
HorizontalAlignment="Stretch"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Disabled"
|
||||
HorizontalContentAlignment="Left"
|
||||
VerticalContentAlignment="Center"
|
||||
ToolTip="{Binding DashboardState.ChipId}"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Grid.Row="1" Header="RECIPE / 配方" Margin="0,0,0,8" BorderBrush="#C7C7C7" BorderThickness="1">
|
||||
<StackPanel Margin="10,8">
|
||||
<TextBlock Text="基板配方:" Foreground="#6B7280"/>
|
||||
<TextBlock Text="{Binding SubstrateRecipe}" FontWeight="Bold"/>
|
||||
<TextBlock Text="芯片配方:" Foreground="#6B7280" Margin="0,4,0,0"/>
|
||||
<TextBlock Text="{Binding ChipRecipe}" FontWeight="Bold"/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Grid.Row="2" BorderBrush="#C7C7C7" BorderThickness="1">
|
||||
<GroupBox.Header>
|
||||
<Grid Width="250">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Text="PRODUCTION STATS/ 统计" VerticalAlignment="Center" Foreground="#0B4A8B" FontWeight="Bold"/>
|
||||
<Button Grid.Column="1"
|
||||
Content="↺ 清除统计"
|
||||
Click="{mw:Action ClearStatistics}"
|
||||
Style="{StaticResource ClearStatsButtonStyle}"/>
|
||||
</Grid>
|
||||
</GroupBox.Header>
|
||||
<Grid Margin="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid Grid.Row="0" Margin="0,2,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Text="加工基板总数"/>
|
||||
<TextBlock Grid.Column="1" Text="{Binding DashboardState.ProcessedSubstrateTotal}" FontWeight="Bold" Foreground="#1D4ED8"/>
|
||||
<TextBlock Grid.Column="2" Text="PCS" Margin="6,0,0,0" Foreground="#94A3B8"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" Margin="0,10,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Text="当前基板待加工芯片"/>
|
||||
<TextBlock Grid.Column="1" Text="{Binding DashboardState.PendingCount}" FontWeight="Bold"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="2" Margin="0,10,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Text="当前基板已加工芯片"/>
|
||||
<TextBlock Grid.Column="1" Text="{Binding DashboardState.ProcessedCount}" FontWeight="Bold" Foreground="#16A34A"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="3" Margin="0,12,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="8"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Border BorderBrush="#C7C7C7" BorderThickness="1" Background="#EFF6FF" Padding="8,6">
|
||||
<StackPanel>
|
||||
<TextBlock Text="实时 UPH" Foreground="#2563EB" HorizontalAlignment="Center"/>
|
||||
<TextBlock Text="{Binding DashboardState.RealTimeUph}" Foreground="#1D4ED8" FontSize="28" FontWeight="Bold" HorizontalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Column="2" BorderBrush="#C7C7C7" BorderThickness="1" Background="#F0FDF4" Padding="8,6">
|
||||
<StackPanel>
|
||||
<TextBlock Text="综合 UPH" Foreground="#16A34A" HorizontalAlignment="Center"/>
|
||||
<TextBlock Text="{Binding DashboardState.YieldUph}" Foreground="#16A34A" FontSize="28" FontWeight="Bold" HorizontalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Grid.Row="3" Header="LIVE CONTROL / 运行控制" Margin="0,8,0,0" BorderBrush="#C7C7C7" BorderThickness="1">
|
||||
<Grid Margin="8,8">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="6"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="6"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="6"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Button Grid.Row="0" Content="启动 START"
|
||||
Click="{mw:Action StartProcess}"
|
||||
Width="190"
|
||||
Height="34"
|
||||
Margin="0"
|
||||
Padding="8,0"
|
||||
FontSize="15"
|
||||
FontWeight="Bold"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
IsEnabled="{Binding Runner.IsRunning, Converter={StaticResource boolToInversionConverter}}"
|
||||
Style="{StaticResource StartButtonStyle}"/>
|
||||
<Button Grid.Row="2" Content="暂停 PAUSE"
|
||||
Click="{mw:Action PauseProcess}"
|
||||
Width="190"
|
||||
Height="34"
|
||||
Margin="0"
|
||||
Padding="8,0"
|
||||
FontSize="15"
|
||||
FontWeight="Bold"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
IsEnabled="{Binding CanPauseProcess}"
|
||||
Style="{StaticResource StopButtonStyle}"/>
|
||||
<Button Grid.Row="4" Content="恢复 RESUME"
|
||||
Click="{mw:Action ResumeProcess}"
|
||||
Width="190"
|
||||
Height="34"
|
||||
Margin="0"
|
||||
Padding="8,0"
|
||||
FontSize="15"
|
||||
FontWeight="Bold"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
IsEnabled="{Binding CanResumeProcess}"
|
||||
Style="{StaticResource StartButtonStyle}"/>
|
||||
<Button Grid.Row="6" Content="停止 STOP"
|
||||
Click="{mw:Action StopProcess}"
|
||||
Width="190"
|
||||
Height="34"
|
||||
Margin="0"
|
||||
Padding="8,0"
|
||||
FontSize="15"
|
||||
FontWeight="Bold"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
IsEnabled="{Binding Runner.IsRunning}"
|
||||
Style="{StaticResource StopButtonStyle}"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
Reference in New Issue
Block a user