Files
XplorePlane/XplorePlane/Views/Main/MainWindow.xaml
T

703 lines
35 KiB
XML

<Window
x:Class="XplorePlane.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="clr-namespace:XplorePlane.Controls"
xmlns:spreadsheet="clr-namespace:Telerik.Windows.Controls.Spreadsheet;assembly=Telerik.Windows.Controls.Spreadsheet"
xmlns:spreadsheetControls="clr-namespace:Telerik.Windows.Controls.Spreadsheet.Controls;assembly=Telerik.Windows.Controls.Spreadsheet"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:views="clr-namespace:XplorePlane.Views"
xmlns:views1="clr-namespace:XP.Hardware.RaySource.Views;assembly=XP.Hardware.RaySource"
xmlns:mcViews="clr-namespace:XP.Hardware.MotionControl.Views;assembly=XP.Hardware.MotionControl"
x:Name="ParentWindow"
Title="XplorePlane"
Width="1920"
Height="1040"
d:DesignWidth="1580"
Background="#F5F5F5"
Icon="pack://application:,,,/XplorePlane;component/XplorerPlane.ico"
WindowStartupLocation="CenterScreen"
mc:Ignorable="d">
<Window.Resources>
<telerik:IconSources
x:Key="IconPaths"
DarkBasePath="/Telerik.Windows.Controls.Spreadsheet;component/Images/Dark/"
LightBasePath="/Telerik.Windows.Controls.Spreadsheet;component/Images/Light/" />
<spreadsheetControls:BoolToVisibilityValueConverter x:Key="BoolToVisibilityValueConverter" />
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter" />
</Window.Resources>
<Grid x:Name="LayoutRoot">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="28*" />
<ColumnDefinition Width="1157*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="24" />
</Grid.RowDefinitions>
<telerik:RadRibbonView
x:Name="ribbonView"
Title=""
Grid.ColumnSpan="3"
VerticalAlignment="Center"
ApplicationButtonVisibility="Collapsed"
ApplicationName=""
BackstageClippingElement="{Binding ElementName=LayoutRoot}"
FontFamily="Microsoft YaHei UI"
FontSize="11"
HeaderBackground="LightGray"
TextOptions.TextFormattingMode="Display"
TextOptions.TextRenderingMode="ClearType"
TitleBarVisibility="Collapsed">
<telerik:RadRibbonView.Resources>
<spreadsheet:FunctionsProvider x:Key="FunctionsProvider" />
</telerik:RadRibbonView.Resources>
<telerik:RadRibbonTab
Width="53"
HorizontalAlignment="Left"
Header="主页">
<telerik:RadRibbonGroup
telerik:ScreenTip.Title="Clipboard"
Header="文件">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="新建CNC"
Command="{Binding NewCncProgramCommand}"
Size="Medium"
SmallImage="/Assets/Icons/new-doc.png"
Text="新建CNC" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="保存当前 CNC 配置"
telerik:ScreenTip.Title="保存"
Size="Medium"
Command="{Binding SaveCncProgramCommand}"
SmallImage="/Assets/Icons/save.png"
Text="保存" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="另存为"
Command="{Binding SaveCncProgramCommand}"
Size="Medium"
SmallImage="/Assets/Icons/saveas.png"
Text="另存为" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="加载CNC"
Command="{Binding LoadCncProgramCommand}"
Size="Large"
SmallImage="/Assets/Icons/open.png"
Text="加载CNC" />
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Header="程序">
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="运行"
Command="{Binding RunCncCommand}"
Size="Large"
SmallImage="/Assets/Icons/run.png"
Text="运行" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="停止"
telerik:ScreenTip.Title="停止"
Command="{Binding StopCncCommand}"
Size="Large"
SmallImage="/Assets/Icons/stop.png"
Text="停止" />
</StackPanel>
<StackPanel Width="52">
<controls:AnimatedSwitch
Width="44"
Height="24"
Margin="4,10,4,4"
HorizontalAlignment="Center"
ToolTip="主界面实时"
IsChecked="{Binding IsMainViewportRealtimeEnabled, Mode=TwoWay}"
IsEnabled="{Binding IsMainViewportSwitchEnabled}"
SwitchWidth="44"
SwitchHeight="24" />
<TextBlock
HorizontalAlignment="Center"
FontFamily="Microsoft YaHei UI"
FontSize="11"
Text="实时" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
Command="{Binding OpenDoorCommand}"
telerik:ScreenTip.Title="Open Door"
Size="Medium"
SmallImage="/Assets/Icons/opendoor.png"
Text="开门" />
<telerik:RadRibbonButton
Command="{Binding CloseDoorCommand}"
telerik:ScreenTip.Title="Close Door"
Size="Medium"
SmallImage="/Assets/Icons/closedoor.png"
Text="关门" />
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Header="快捷工具">
<telerik:RadRibbonButton
Command="{Binding LoadImageCommand}"
Size="Large"
SmallImage="/Assets/Icons/open.png"
Text="加载图像" />
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="中心十字线"
Command="{Binding ToggleCrosshairCommand}"
Size="Medium"
SmallImage="/Assets/Icons/crosshair.png"
Text="辅助线" />
<telerik:RadRibbonToggleButton
telerik:ScreenTip.Description="显示/隐藏图像比例尺"
telerik:ScreenTip.Title="比例尺"
IsChecked="{Binding IsScaleBarVisible, Mode=TwoWay}"
Size="Medium"
SmallImage="/Assets/Icons/Scale.png"
Text="比例尺" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="白底检测"
Command="{Binding WhiteBackgroundDetectionCommand}"
Size="Medium"
SmallImage="/Assets/Icons/film-darken.png"
Text="白底检测" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="灰度"
Command="{Binding GrayscaleCommand}"
Size="Medium"
SmallImage="/Assets/Icons/film-darken.png"
Text="灰度" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="黑底检测"
Command="{Binding BlackBackgroundDetectionCommand}"
Size="Medium"
SmallImage="/Assets/Icons/film-darken.png"
Text="黑底检测" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="锐化"
Command="{Binding SharpenCommand}"
Size="Medium"
SmallImage="/Assets/Icons/sharpen.png"
Text="锐化" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="增强"
Command="{Binding EnhanceCommand}"
Size="Medium"
SmallImage="/Assets/Icons/dynamic-range.png"
Text="增强" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="录屏"
telerik:ScreenTip.Description="对实时图像区域进行录屏"
Command="{Binding ToggleRecordingCommand}"
Size="Medium"
SmallImage="/Assets/Icons/record.png"
Text="录屏">
<telerik:RadRibbonButton.Style>
<Style TargetType="telerik:RadRibbonButton">
<Style.Triggers>
<DataTrigger Binding="{Binding IsRecording}" Value="True">
<Setter Property="Background" Value="#FFCC0000" />
<Setter Property="Foreground" Value="White" />
</DataTrigger>
</Style.Triggers>
</Style>
</telerik:RadRibbonButton.Style>
</telerik:RadRibbonButton>
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Header="测量工具">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<!-- 第一列: 点点距 + 点线距 -->
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="测量两点之间的距离"
telerik:ScreenTip.Title="点点距测量"
Command="{Binding PointDistanceMeasureCommand}"
IsEnabled="{Binding IsMeasurementToolsEnabled}"
Size="Medium"
SmallImage="/Assets/Icons/ptop.png"
Text="点点距测量" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="测量点到直线的距离"
telerik:ScreenTip.Title="点线距测量"
Command="{Binding PointLineDistanceMeasureCommand}"
IsEnabled="{Binding IsMeasurementToolsEnabled}"
Size="Medium"
SmallImage="/Assets/Icons/ptol.png"
Text="点线距测量" />
</StackPanel>
<!-- 第二列: 角度 + 通孔填锡率 -->
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="测量两条线之间的角度"
telerik:ScreenTip.Title="角度测量"
Command="{Binding AngleMeasureCommand}"
IsEnabled="{Binding IsMeasurementToolsEnabled}"
Size="Medium"
SmallImage="/Assets/Icons/angle.png"
Text="角度测量" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="测量通孔填锡率"
telerik:ScreenTip.Title="通孔填锡率测量"
Command="{Binding ThroughHoleFillRateMeasureCommand}"
IsEnabled="{Binding IsMeasurementToolsEnabled}"
Size="Medium"
SmallImage="/Assets/Icons/cylinder.png"
Text="通孔填锡率" />
</StackPanel>
<!-- 第三列: 气泡测量 -->
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="手动气泡测量(魔棒+画笔)"
telerik:ScreenTip.Title="气泡测量"
Command="{Binding BubbleMeasureCommand}"
IsEnabled="{Binding IsMeasurementToolsEnabled}"
Size="Medium"
SmallImage="/Assets/Icons/pores.png"
Text="气泡测量" />
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Header="图像算子" telerik:ScreenTip.Title="图像算子">
<telerik:RadRibbonButton
telerik:ScreenTip.Description="打开算子工具箱,拖拽算子到流水线中"
telerik:ScreenTip.Title="算子工具箱"
Command="{Binding OpenToolboxCommand}"
Size="Large"
SmallImage="/Assets/Icons/dynamic-range.png"
Text="算子工具箱" />
<StackPanel Width="170">
<TextBlock
Margin="0,0,0,4"
HorizontalAlignment="Center"
Text="内置检测模块" />
<telerik:RadRibbonComboBox
Width="160"
ItemsSource="{Binding BuiltInInspectionModules}"
DisplayMemberPath="DisplayName"
SelectedItem="{Binding SelectedBuiltInInspectionModule}"
IsEditable="False" />
<telerik:RadRibbonButton
Margin="0,4,0,0"
telerik:ScreenTip.Description="从 Tools 目录扫描到的 .xpm 中选择一个配方,并插入到当前 CNC 程序中"
telerik:ScreenTip.Title="插入内置检测模块"
Command="{Binding InsertBuiltInInspectionModuleCommand}"
Size="Medium"
SmallImage="/Assets/Icons/Module.png"
Text="插入模块" />
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Header="CNC">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="打开 CNC 编辑器窗口,创建和编辑检测配方程序"
telerik:ScreenTip.Title="CNC 编辑器"
Command="{Binding OpenCncEditorCommand}"
Size="Large"
SmallImage="/Assets/Icons/cnc.png"
Text="CNC 编辑" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="打开矩阵编排窗口,配置多工件阵列检测方案"
telerik:ScreenTip.Title="矩阵编排"
Command="{Binding OpenMatrixEditorCommand}"
Size="Large"
SmallImage="/Assets/Icons/matrix.png"
Text="矩阵编排" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="浏览历史 CNC 检测结果记录"
telerik:ScreenTip.Title="检测记录"
Command="{Binding OpenInspectionReportViewerCommand}"
Size="Large"
SmallImage="/Assets/Icons/message.png"
Text="检测记录" />
<!--
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="参考点"
Size="Medium"
Command="{Binding InsertReferencePointCommand}"
SmallImage="/Assets/Icons/reference.png"
Text="参考点" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="添加位置"
Size="Medium"
Command="{Binding InsertSavePositionCommand}"
SmallImage="/Assets/Icons/add-pos.png"
Text="添加位置" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="完成"
Size="Medium"
Command="{Binding InsertCompleteProgramCommand}"
SmallImage="/Assets/Icons/finish.png"
Text="完成" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="检测标记"
Size="Medium"
Command="{Binding InsertInspectionMarkerCommand}"
SmallImage="/Assets/Icons/mark.png"
Text="检测标记" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="模块"
Size="Medium"
Command="{Binding InsertInspectionModuleCommand}"
SmallImage="/Assets/Icons/Module.png"
Text="检测模块" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Title="消息"
Size="Medium"
Command="{Binding InsertPauseDialogCommand}"
SmallImage="/Assets/Icons/message.png"
Text="消息弹窗" />
<telerik:RadRibbonButton
telerik:ScreenTip.Title="等待"
Size="Medium"
Command="{Binding InsertWaitDelayCommand}"
SmallImage="/Assets/Icons/wait.png"
Text="插入等待" />
</StackPanel>
-->
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Header="高级模块">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="自动检测BGA焊球并计算空隙率"
telerik:ScreenTip.Title="BGA检测"
Command="{Binding BgaDetectionCommand}"
Content="BGA检测"
Size="Large"
SmallImage="/Assets/Icons/bga.png" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="自动检测空隙区域并计算空隙率"
telerik:ScreenTip.Title="空隙检测"
Command="{Binding VoidDetectionCommand}"
Content="孔隙检测"
Size="Large"
SmallImage="/Assets/Icons/Pores.png" />
</telerik:RadRibbonGroup>
</telerik:RadRibbonTab>
<telerik:RadRibbonTab Header="3D扫描">
<telerik:RadRibbonGroup Header="扫描模式">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="Create a link in your document for quick access to webpages and files.&#13;&#13;Hyperlinks can also take you to places in your document."
telerik:ScreenTip.Title="Add a Hyperlink"
Content="快速扫描"
IsEnabled="False"
Size="Large"
SmallImage="/Assets/Icons/quick-scan.png" />
</telerik:RadRibbonGroup>
</telerik:RadRibbonTab>
<telerik:RadRibbonTab Header="设置">
<telerik:RadRibbonGroup Header="全局设置">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadRibbonButton
Size="Large"
SmallImage="/Assets/Icons/setting.png"
Command="{Binding OpenSettingsCommand}"
Text="设置" />
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup
telerik:ScreenTip.Description="Show the Alignment tab of the Format Cells dialog box."
telerik:ScreenTip.Title="Format Cells: Alignment"
DialogLauncherCommandParameter="Alignment"
DialogLauncherVisibility="Collapsed"
Header="硬件"
IsEnabled="True">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadRibbonGroup.Resources>
<spreadsheetControls:RadHorizontalAlignmentToBooleanConverter x:Key="horizontalAlignmentToBooleanConverter" />
<spreadsheetControls:RadVerticalAlignmentToBooleanConverter x:Key="verticalAlignmentToBooleanConverter" />
</telerik:RadRibbonGroup.Resources>
<StackPanel />
<StackPanel>
<telerik:RadRibbonToggleButton
telerik:ScreenTip.Description="射线源控制"
telerik:ScreenTip.Title="射线源"
Command="{Binding OpenRaySourceConfigCommand}"
Size="Medium"
SmallImage="/Assets/Icons/xray.png"
Text="射线源" />
<telerik:RadRibbonToggleButton
telerik:ScreenTip.Description="探测器控制"
telerik:ScreenTip.Title="探测器"
Command="{Binding OpenDetectorConfigCommand}"
Size="Medium"
SmallImage="/Assets/Icons/detector2.png"
Text="探测器" />
<telerik:RadRibbonToggleButton
telerik:ScreenTip.Description="运动控制"
telerik:ScreenTip.Title="运动控制"
Command="{Binding OpenMotionDebugCommand}"
Size="Medium"
SmallImage="/Assets/Icons/xyz.png"
Text="运动控制" />
</StackPanel>
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="打开相机参数设置窗口"
telerik:ScreenTip.Title="相机设置"
Command="{Binding OpenCameraSettingsCommand}"
Size="Medium"
SmallImage="/Assets/Icons/detector2.png"
Text="相机设置" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="打开 PLC 地址配置窗口"
telerik:ScreenTip.Title="PLC 地址配置"
Command="{Binding OpenPlcAddrConfigCommand}"
Size="Medium"
SmallImage="/Assets/Icons/tools.png"
Text="PLC 地址" />
</StackPanel>
<StackPanel>
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup
telerik:ScreenTip.Description="Show the Alignment tab of the Format Cells dialog box."
telerik:ScreenTip.Title="Format Cells: Alignment"
DialogLauncherCommand="{Binding Path=ShowFormatCellsDialog.Command}"
DialogLauncherCommandParameter="Alignment"
DialogLauncherVisibility="{Binding Path=ShowFormatCellsDialog.IsEnabled, Converter={StaticResource BoolToVisibilityValueConverter}}"
Header="识别定位"
IsEnabled="{Binding Path=AlignmentGroup.IsEnabled}">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadRibbonGroup.Resources>
<spreadsheetControls:RadHorizontalAlignmentToBooleanConverter x:Key="horizontalAlignmentToBooleanConverter" />
<spreadsheetControls:RadVerticalAlignmentToBooleanConverter x:Key="verticalAlignmentToBooleanConverter" />
</telerik:RadRibbonGroup.Resources>
<StackPanel />
<StackPanel>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="框选模板、调参并在当前图像上试跑旋转模板匹配"
telerik:ScreenTip.Title="模板匹配助手"
Command="{Binding OpenTemplateMatchAssistantCommand}"
Size="Medium"
SmallImage="/Assets/Icons/Matching.png"
Text="模板助手" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="沿搜索线放置卡尺检测边缘点并拟合直线"
telerik:ScreenTip.Title="拟合直线"
Command="{Binding EdgeLineFitCommand}"
Size="Medium"
SmallImage="/Assets/Icons/FittedLine.png"
Text="拟合直线" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="沿搜索线放置卡尺检测边缘点并拟合圆"
telerik:ScreenTip.Title="拟合圆"
Command="{Binding EdgeCircleFitCommand}"
Size="Medium"
SmallImage="/Assets/Icons/FittedCircle.png"
Text="拟合圆" />
</StackPanel>
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Header="校准">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="导航相机镜头畸变校正"
telerik:ScreenTip.Title="畸变校正"
Command="{Binding OpenCameraChessboardCalibrationCommand}"
Size="Large"
SmallImage="/Assets/Icons/detector2.png"
Text="畸变校正" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="平面坐标系标定"
telerik:ScreenTip.Title="坐标标定"
Command="{Binding OpenCameraCalibrationCommand}"
Size="Large"
SmallImage="/Assets/Icons/tools.png"
Text="坐标标定" />
</telerik:RadRibbonGroup>
<telerik:RadRibbonGroup Header="开发调试">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadRibbonButton
telerik:ScreenTip.Description="打开实时日志查看器"
telerik:ScreenTip.Title="查看日志"
Size="Large"
SmallImage="/Assets/Icons/message.png"
Command="{Binding OpenRealTimeLogViewerCommand}"
Text="查看日志" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="打开 AppState 可视化调试面板"
telerik:ScreenTip.Title="调试面板"
Size="Large"
SmallImage="/Assets/Icons/tools.png"
Command="{Binding OpenDebugPanelCommand}"
Text="调试面板" />
<telerik:RadRibbonButton
telerik:ScreenTip.Description="打开检测报告配置窗口"
telerik:ScreenTip.Title="报告"
Command="{Binding OpenReportConfigCommand}"
Size="Large"
SmallImage="/Assets/Icons/message.png"
Text="报告生成" />
</telerik:RadRibbonGroup>
</telerik:RadRibbonTab>
<telerik:RadRibbonTab Header="帮助">
<telerik:RadRibbonGroup Header="帮助">
<telerik:RadRibbonGroup.Variants>
<telerik:GroupVariant Priority="0" Variant="Large" />
</telerik:RadRibbonGroup.Variants>
<telerik:RadRibbonButton
Size="Large"
SmallImage="/Assets/Icons/message.png"
Command="{Binding OpenUserManualCommand}"
Text="用户手册" />
<telerik:RadRibbonButton
Size="Large"
SmallImage="/Assets/Icons/tools.png"
Command="{Binding OpenLibraryVersionsCommand}"
Text="软件信息" />
</telerik:RadRibbonGroup>
</telerik:RadRibbonTab>
</telerik:RadRibbonView>
<Grid
Grid.Row="1"
Grid.ColumnSpan="3"
Margin="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding ViewportPanelWidth}" />
<ColumnDefinition Width="{Binding ImagePanelWidth}" />
<ColumnDefinition Width="370" />
</Grid.ColumnDefinitions>
<Border
Grid.Column="0"
BorderBrush="#DDDDDD"
BorderThickness="1,0,1,0">
<views:ViewportPanelView />
</Border>
<Border
Grid.Column="1"
BorderBrush="#DDDDDD"
BorderThickness="0,0,1,0">
<views:ImagePanelView />
</Border>
<Grid Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="370" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<views1:RaySourceOperateView Grid.Row="0" Margin="0,0,5,0" />
<mcViews:AxisControlView Grid.Row="1" Margin="0,0,5,0" />
<views:NavigationPropertyPanelView Grid.Row="2" Margin="0,0,5,0" Grid.RowSpan="2" />
</Grid>
</Grid>
<Border
Grid.Row="2"
Grid.ColumnSpan="3"
Background="#0060A0"
BorderBrush="#004880"
BorderThickness="0,1,0,0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Margin="8,0"
VerticalAlignment="Center"
FontFamily="Microsoft YaHei UI"
FontSize="11"
Foreground="White"
Text="{Binding CncStatusMessage}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="White" />
<Style.Triggers>
<DataTrigger Binding="{Binding CncHasExecutionError}" Value="True">
<Setter Property="Foreground" Value="#FF9090" />
<Setter Property="FontWeight" Value="SemiBold" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock
Grid.Column="1"
Margin="8,0"
VerticalAlignment="Center"
FontFamily="Consolas"
FontSize="11"
Foreground="White"
Text="{Binding CursorInfoText}" />
</Grid>
</Border>
</Grid>
</Window>