300 lines
18 KiB
XML
300 lines
18 KiB
XML
<UserControl x:Class="XP.Hardware.RaySource.Views.RaySourceConfigView"
|
|
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:prism="http://prismlibrary.com/"
|
|
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
|
|
xmlns:loc="clr-namespace:XP.Common.Localization.Extensions;assembly=XP.Common"
|
|
xmlns:converters="clr-namespace:XP.Hardware.RaySource.Converters"
|
|
mc:Ignorable="d"
|
|
d:DesignHeight="420" d:DesignWidth="500"
|
|
prism:ViewModelLocator.AutoWireViewModel="True"
|
|
Background="White">
|
|
<UserControl.Resources>
|
|
<converters:FilamentLifetimeColorConverter x:Key="LifetimeColorConverter"/>
|
|
</UserControl.Resources>
|
|
<Grid Margin="15">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- 第1行:设备信息 | Row 1: Device Info -->
|
|
<Grid Grid.Row="0" Margin="0 0 0 10">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="{loc:Localization RaySource_SourceTypeLabel}"
|
|
FontSize="13" VerticalAlignment="Center"/>
|
|
<TextBlock Grid.Column="1" Text="{Binding SourceTypeText}"
|
|
FontSize="13" FontWeight="Bold" VerticalAlignment="Center" Margin="8 0 0 0"/>
|
|
<TextBlock Grid.Column="2" Text="{Binding ConnectionStatusText}"
|
|
FontSize="12" VerticalAlignment="Center">
|
|
<TextBlock.Style>
|
|
<Style TargetType="TextBlock">
|
|
<!-- 默认灰色:未连接 -->
|
|
<Setter Property="Foreground" Value="#FF9E9E9E"/>
|
|
<Style.Triggers>
|
|
<!-- 已初始化但变量未连接:橙色 -->
|
|
<MultiDataTrigger>
|
|
<MultiDataTrigger.Conditions>
|
|
<Condition Binding="{Binding IsInitialized}" Value="True"/>
|
|
<Condition Binding="{Binding IsVariablesConnected}" Value="False"/>
|
|
</MultiDataTrigger.Conditions>
|
|
<Setter Property="Foreground" Value="#FFFF9800"/>
|
|
</MultiDataTrigger>
|
|
<!-- 变量已连接:绿色 -->
|
|
<MultiDataTrigger>
|
|
<MultiDataTrigger.Conditions>
|
|
<Condition Binding="{Binding IsInitialized}" Value="True"/>
|
|
<Condition Binding="{Binding IsVariablesConnected}" Value="True"/>
|
|
</MultiDataTrigger.Conditions>
|
|
<Setter Property="Foreground" Value="#FF4CAF50"/>
|
|
</MultiDataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</TextBlock.Style>
|
|
</TextBlock>
|
|
</Grid>
|
|
|
|
<!-- 第2行:操作按钮(3列等宽均布)| Row 2: Action Buttons (3 equal-width columns) -->
|
|
<Grid Grid.Row="1" Margin="0 0 0 12">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<telerik:RadButton Grid.Column="0" Content="{loc:Localization RaySource_InitializeButton}"
|
|
Command="{Binding InitializeCommand}"
|
|
Height="32" Margin="0 0 4 0" HorizontalAlignment="Stretch"
|
|
telerik:StyleManager.Theme="Crystal">
|
|
<telerik:RadButton.Background>
|
|
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
|
|
<GradientStop Color="White"/>
|
|
<GradientStop Color="#FF62B8E0" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
</telerik:RadButton.Background>
|
|
</telerik:RadButton>
|
|
<telerik:RadButton Grid.Column="1" Content="{loc:Localization RaySource_ConnectVariablesButton}"
|
|
Command="{Binding ConnectVariablesCommand}"
|
|
Height="32" Margin="4 0" HorizontalAlignment="Stretch"
|
|
telerik:StyleManager.Theme="Crystal">
|
|
<telerik:RadButton.Background>
|
|
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
|
|
<GradientStop Color="White"/>
|
|
<GradientStop Color="#FF77E062" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
</telerik:RadButton.Background>
|
|
</telerik:RadButton>
|
|
<telerik:RadButton Grid.Column="2" Content="{loc:Localization RaySource_DisconnectButton}"
|
|
Command="{Binding DisconnectCommand}"
|
|
Height="32" Margin="4 0 0 0" HorizontalAlignment="Stretch"
|
|
telerik:StyleManager.Theme="Crystal">
|
|
<telerik:RadButton.Background>
|
|
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
|
|
<GradientStop Color="White"/>
|
|
<GradientStop Color="#FFFFA1A1" Offset="1"/>
|
|
</LinearGradientBrush>
|
|
</telerik:RadButton.Background>
|
|
</telerik:RadButton>
|
|
</Grid>
|
|
|
|
<!-- 第3行:分隔线 | Row 3: Separator -->
|
|
<Separator Grid.Row="2" Margin="0 0 0 8"/>
|
|
|
|
<!-- 第4行:设备状态监控面板 | Row 4: Device Status Monitor Panel -->
|
|
<Grid Grid.Row="3">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- 暖机状态 | Warm-up Status -->
|
|
<StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal" Margin="0 2">
|
|
<TextBlock Text="{loc:Localization RaySource_WarmUpLabel}" FontSize="12" Foreground="#616161" Width="80"/>
|
|
<TextBlock Text="{Binding WarmUpStatus}" FontSize="12" FontWeight="SemiBold"/>
|
|
</StackPanel>
|
|
|
|
<!-- 真空状态 | Vacuum Status -->
|
|
<StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal" Margin="8 2">
|
|
<TextBlock Text="{loc:Localization RaySource_VacuumLabel}" FontSize="12" Foreground="#616161" Width="80"/>
|
|
<TextBlock Text="{Binding VacuumStatus}" FontSize="12" FontWeight="SemiBold"/>
|
|
</StackPanel>
|
|
|
|
<!-- 启动状态 | Startup Status -->
|
|
<StackPanel Grid.Row="1" Grid.Column="0" Orientation="Horizontal" Margin="0 2">
|
|
<TextBlock Text="{loc:Localization RaySource_StartUpLabel}" FontSize="12" Foreground="#616161" Width="80"/>
|
|
<TextBlock Text="{Binding StartUpStatus}" FontSize="12" FontWeight="SemiBold"/>
|
|
</StackPanel>
|
|
|
|
<!-- 自动定心 | Auto-center Status -->
|
|
<StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal" Margin="8 2">
|
|
<TextBlock Text="{loc:Localization RaySource_AutoCenterLabel}" FontSize="12" Foreground="#616161" Width="80"/>
|
|
<TextBlock Text="{Binding AutoCenterStatus}" FontSize="12" FontWeight="SemiBold"/>
|
|
</StackPanel>
|
|
|
|
<!-- 灯丝校准 | Filament Adjust Status -->
|
|
<StackPanel Grid.Row="2" Grid.Column="0" Orientation="Horizontal" Margin="0 2">
|
|
<TextBlock Text="{loc:Localization RaySource_FilamentLabel}" FontSize="12" Foreground="#616161" Width="80"/>
|
|
<TextBlock Text="{Binding FilamentAdjustStatus}" FontSize="12" FontWeight="SemiBold"/>
|
|
</StackPanel>
|
|
|
|
<!-- 射线开启状态 | X-Ray On Status -->
|
|
<StackPanel Grid.Row="2" Grid.Column="1" Orientation="Horizontal" Margin="8 2">
|
|
<TextBlock Text="{loc:Localization RaySource_XRayOnLabel}" FontSize="12" Foreground="#616161" Width="80"/>
|
|
<TextBlock Text="{Binding XRayOnStatusText}" FontSize="12" FontWeight="SemiBold">
|
|
<TextBlock.Style>
|
|
<Style TargetType="TextBlock">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding IsXRayOn}" Value="True">
|
|
<Setter Property="Foreground" Value="#FF4CAF50"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</TextBlock.Style>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
|
|
<!-- 连锁状态 | Interlock Status -->
|
|
<StackPanel Grid.Row="3" Grid.Column="0" Orientation="Horizontal" Margin="0 2">
|
|
<TextBlock Text="{loc:Localization RaySource_InterlockLabel}" FontSize="12" Foreground="#616161" Width="80"/>
|
|
<TextBlock Text="{Binding InterlockStatusText}" FontSize="12" FontWeight="SemiBold">
|
|
<TextBlock.Style>
|
|
<Style TargetType="TextBlock">
|
|
<!-- 默认未激活:红色 | Default inactive: red -->
|
|
<Setter Property="Foreground" Value="#FFE53935"/>
|
|
<Style.Triggers>
|
|
<!-- 激活时:绿色 | Active: green -->
|
|
<DataTrigger Binding="{Binding IsInterlockActive}" Value="True">
|
|
<Setter Property="Foreground" Value="#FF4CAF50"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</TextBlock.Style>
|
|
</TextBlock>
|
|
</StackPanel>
|
|
|
|
<!-- 看门狗 | Watchdog Status -->
|
|
<StackPanel Grid.Row="3" Grid.Column="1" Orientation="Horizontal" Margin="8 2">
|
|
<TextBlock Text="{loc:Localization RaySource_WatchdogLabel}" FontSize="12" Foreground="#616161" Width="80"/>
|
|
<TextBlock Text="{Binding WatchdogStatus}" FontSize="12" FontWeight="SemiBold"/>
|
|
</StackPanel>
|
|
|
|
<!-- TXI状态 + TXI ON/OFF 按钮(同一行)| TXI Status + TXI ON/OFF Buttons (same row) -->
|
|
<StackPanel Grid.Row="4" Grid.Column="0" Orientation="Horizontal" Margin="0 4 0 2" VerticalAlignment="Center">
|
|
<TextBlock Text="{loc:Localization RaySource_TxiStatusLabel}" FontSize="12" Foreground="#616161" Width="80"/>
|
|
<TextBlock Text="{Binding TxiStatus}" FontSize="12" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
<Grid Grid.Row="4" Grid.Column="1" Margin="8 2 0 0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<telerik:RadButton Grid.Column="0" Content="{loc:Localization RaySource_TxiOnButton}"
|
|
Command="{Binding TxiOnCommand}"
|
|
Height="20" Padding="4 0" FontSize="11"
|
|
Margin="0 0 2 0" HorizontalAlignment="Stretch"
|
|
telerik:StyleManager.Theme="Crystal"/>
|
|
<telerik:RadButton Grid.Column="1" Content="{loc:Localization RaySource_TxiOffButton}"
|
|
Command="{Binding TxiOffCommand}"
|
|
Height="20" Padding="4 0" FontSize="11"
|
|
Margin="2 0 0 0" HorizontalAlignment="Stretch"
|
|
telerik:StyleManager.Theme="Crystal"/>
|
|
</Grid>
|
|
|
|
<!-- 功率模式 + High Power/Micro Focus 按钮(同一行)| Power Mode + HP/MF Buttons (same row) -->
|
|
<StackPanel Grid.Row="5" Grid.Column="0" Orientation="Horizontal" Margin="0 4 0 2" VerticalAlignment="Center">
|
|
<TextBlock Text="{loc:Localization RaySource_PowerModeLabel}" FontSize="12" Foreground="#616161" Width="80"/>
|
|
<TextBlock Text="{Binding PowerMode}" FontSize="12" FontWeight="SemiBold" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
<Grid Grid.Row="5" Grid.Column="1" Margin="8 2 0 0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<telerik:RadButton Grid.Column="0" Content="{loc:Localization RaySource_HighPowerButton}"
|
|
Command="{Binding HighPowerCommand}"
|
|
Height="20" Padding="4 0" FontSize="11"
|
|
Margin="0 0 2 0" HorizontalAlignment="Stretch"
|
|
telerik:StyleManager.Theme="Crystal"/>
|
|
<telerik:RadButton Grid.Column="1" Content="{loc:Localization RaySource_MicroFocusButton}"
|
|
Command="{Binding MicroFocusCommand}"
|
|
Height="20" Padding="4 0" FontSize="11"
|
|
Margin="2 0 0 0" HorizontalAlignment="Stretch"
|
|
telerik:StyleManager.Theme="Crystal"/>
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<!-- 第5行:分隔线 | Row 5: Separator -->
|
|
<Separator Grid.Row="4" Margin="0 8 0 8"/>
|
|
|
|
<!-- 第6行:功能设置按钮 | Row 6: Function Setting Buttons -->
|
|
<Grid Grid.Row="5">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<telerik:RadButton Grid.Column="0" Content="{loc:Localization RaySource_WarmUpSettingButton}"
|
|
Command="{Binding WarmUpSettingCommand}"
|
|
Height="30" Margin="0 0 4 0" HorizontalAlignment="Stretch"
|
|
telerik:StyleManager.Theme="Crystal"/>
|
|
<telerik:RadButton Grid.Column="1" Content="{loc:Localization RaySource_TrainingSettingButton}"
|
|
Command="{Binding TrainingSettingCommand}"
|
|
Height="30" Margin="4 0" HorizontalAlignment="Stretch"
|
|
telerik:StyleManager.Theme="Crystal"/>
|
|
<telerik:RadButton Grid.Column="2" Content="{loc:Localization RaySource_FilamentCalibrationButton}"
|
|
Command="{Binding FilamentCalibrationCommand}"
|
|
Height="30" Margin="4 0" HorizontalAlignment="Stretch"
|
|
telerik:StyleManager.Theme="Crystal"/>
|
|
<telerik:RadButton Grid.Column="3" Content="{loc:Localization RaySource_AutoCenterSettingButton}"
|
|
Command="{Binding AutoCenterSettingCommand}"
|
|
Height="30" Margin="4 0 0 0" HorizontalAlignment="Stretch"
|
|
telerik:StyleManager.Theme="Crystal"/>
|
|
</Grid>
|
|
|
|
<!-- 第7行:分隔线 | Row 7: Separator -->
|
|
<Separator Grid.Row="6" Margin="0 8 0 8"/>
|
|
|
|
<!-- 第8行:灯丝寿命进度条 | Row 8: Filament Lifetime Progress Bar -->
|
|
<Grid Grid.Row="7">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0"
|
|
Text="{loc:Localization RaySource_FilamentLifetimeLabel}"
|
|
FontSize="12" Foreground="#616161" VerticalAlignment="Center" Margin="0 0 8 0"/>
|
|
<telerik:RadProgressBar Grid.Column="1"
|
|
Minimum="0" Maximum="100"
|
|
Value="{Binding FilamentLifetime, Mode=OneWay}"
|
|
Foreground="{Binding FilamentLifetime, Converter={StaticResource LifetimeColorConverter}}"
|
|
Height="8" VerticalAlignment="Center"
|
|
telerik:StyleManager.Theme="Crystal"/>
|
|
<TextBlock Grid.Column="2"
|
|
Text="{Binding FilamentLifetimeText}"
|
|
FontSize="11" Foreground="#616161" VerticalAlignment="Center" Margin="8 0 0 0"/>
|
|
</Grid>
|
|
</Grid>
|
|
</UserControl>
|