395 lines
24 KiB
XML
395 lines
24 KiB
XML
<UserControl x:Class="BenchMovementModule.Views.BenchMovementView"
|
|
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"
|
|
mc:Ignorable="d"
|
|
xmlns:prism="http://prismlibrary.com/"
|
|
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
|
prism:ViewModelLocator.AutoWireViewModel="True"
|
|
d:DesignHeight="1080" d:DesignWidth="1920">
|
|
|
|
<UserControl.Resources>
|
|
<Style TargetType="TextBlock" x:Key="HeaderStyle">
|
|
<Setter Property="Foreground" Value="#333333"/>
|
|
<Setter Property="FontSize" Value="18"/>
|
|
<Setter Property="FontWeight" Value="Bold"/>
|
|
<Setter Property="Margin" Value="2,2,2,5"/>
|
|
</Style>
|
|
|
|
<Style TargetType="TextBlock" x:Key="LabelStyle">
|
|
<Setter Property="Foreground" Value="#555555"/>
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Margin" Value="5"/>
|
|
</Style>
|
|
|
|
<Style TargetType="TextBlock" x:Key="ValueStyle">
|
|
<Setter Property="Foreground" Value="#0056B3"/>
|
|
<Setter Property="FontSize" Value="26"/>
|
|
<Setter Property="FontWeight" Value="Bold"/>
|
|
<Setter Property="HorizontalAlignment" Value="Center"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
</Style>
|
|
|
|
<Style TargetType="TextBox">
|
|
<Setter Property="Background" Value="White"/>
|
|
<Setter Property="Foreground" Value="#333333"/>
|
|
<Setter Property="BorderBrush" Value="#CCCCCC"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="Padding" Value="4,2"/>
|
|
<Setter Property="Height" Value="28"/>
|
|
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
|
</Style>
|
|
|
|
<Style TargetType="Button">
|
|
<Setter Property="Background" Value="#F5F5F5"/>
|
|
<Setter Property="Foreground" Value="#333333"/>
|
|
<Setter Property="BorderBrush" Value="#B8B8B8"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Padding" Value="12,5"/>
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="Height" Value="34"/>
|
|
<Setter Property="Margin" Value="0,0,0,8"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="btnBorder"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="3">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="btnBorder" Property="Background" Value="#EAEAEA"/>
|
|
<Setter TargetName="btnBorder" Property="BorderBrush" Value="#4A90E2"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="btnBorder" Property="Background" Value="#DCDCDC"/>
|
|
<Setter TargetName="btnBorder" Property="BorderBrush" Value="#2A6099"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="Button" x:Key="StopButtonStyle" BasedOn="{StaticResource {x:Type Button}}">
|
|
<Setter Property="Background" Value="#FFF0F0"/>
|
|
<Setter Property="Foreground" Value="#C00000"/>
|
|
<Setter Property="BorderBrush" Value="#E0A0A0"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="btnBorder" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" CornerRadius="3">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="btnBorder" Property="Background" Value="#FFE0E0"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="btnBorder" Property="Background" Value="#F0C0C0"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="Button" x:Key="EmergencyButtonStyle" BasedOn="{StaticResource {x:Type Button}}">
|
|
<Setter Property="Background" Value="#D9534F"/>
|
|
<Setter Property="Foreground" Value="White"/>
|
|
<Setter Property="BorderBrush" Value="#D43F3A"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="btnBorder" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" CornerRadius="4">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="btnBorder" Property="Background" Value="#C9302C"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="btnBorder" Property="Background" Value="#AC2925"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="Button" x:Key="ConnectButtonStyle" BasedOn="{StaticResource {x:Type Button}}">
|
|
<Setter Property="Background" Value="#5CB85C"/>
|
|
<Setter Property="Foreground" Value="White"/>
|
|
<Setter Property="BorderBrush" Value="#4CAE4C"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border x:Name="btnBorder" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" CornerRadius="3">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="btnBorder" Property="Background" Value="#449D44"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="btnBorder" Property="Background" Value="#3D8B3D"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="GroupBox">
|
|
<Setter Property="BorderBrush" Value="#D0D0D0"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Margin" Value="6"/>
|
|
<Setter Property="Padding" Value="10"/>
|
|
</Style>
|
|
</UserControl.Resources>
|
|
|
|
<Grid Background="#F0F2F5">
|
|
<TabControl Background="Transparent" BorderThickness="0">
|
|
<TabControl.Resources>
|
|
<Style TargetType="TabItem">
|
|
<Setter Property="Background" Value="#E0E4E8"/>
|
|
<Setter Property="Foreground" Value="#333333"/>
|
|
<Setter Property="FontSize" Value="15"/>
|
|
<Setter Property="FontWeight" Value="SemiBold"/>
|
|
<Setter Property="Padding" Value="25,6"/>
|
|
<Setter Property="Margin" Value="2,0,2,0"/>
|
|
</Style>
|
|
</TabControl.Resources>
|
|
|
|
<!-- ======================= 1. 控制面板 ======================= -->
|
|
<TabItem Header="控制">
|
|
<Grid Margin="10">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="4*"/>
|
|
<ColumnDefinition Width="1*"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- 顶部:连接状态条 -->
|
|
<Border Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Background="White" BorderBrush="#D0D0D0" BorderThickness="1" CornerRadius="3" Padding="15,8" Margin="0,0,0,10">
|
|
<StackPanel Orientation="Horizontal">
|
|
<Ellipse Width="14" Height="14" Margin="0,0,8,0">
|
|
<Ellipse.Style>
|
|
<Style TargetType="Ellipse">
|
|
<Setter Property="Fill" Value="#999999"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding IsConnected}" Value="True">
|
|
<Setter Property="Fill" Value="#5CB85C"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Ellipse.Style>
|
|
</Ellipse>
|
|
<TextBlock Text="{Binding ConnectionStatus}" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" Margin="0,0,20,0"/>
|
|
<Button Content="连接" Width="80" Margin="0" Style="{StaticResource ConnectButtonStyle}" Command="{Binding ConnectCommand}"/>
|
|
<Button Content="断开" Width="80" Margin="8,0,0,0" Style="{StaticResource StopButtonStyle}" Command="{Binding DisconnectCommand}"/>
|
|
<Button Content="刷新状态" Width="90" Margin="8,0,0,0" Command="{Binding ReadStatusCommand}"/>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- 左中:位置显示 & 寸动目标 -->
|
|
<Grid Grid.Row="1" Grid.Column="0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="1*"/>
|
|
<ColumnDefinition Width="1.5*"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- 6轴绝对位置 -->
|
|
<GroupBox Grid.Column="0">
|
|
<GroupBox.Header>
|
|
<TextBlock Text="绝对位置(只读)" Style="{StaticResource HeaderStyle}"/>
|
|
</GroupBox.Header>
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition/>
|
|
<RowDefinition/>
|
|
<RowDefinition/>
|
|
<RowDefinition/>
|
|
<RowDefinition/>
|
|
<RowDefinition/>
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="轴1" Style="{StaticResource LabelStyle}"/>
|
|
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding AbsPos1}" Style="{StaticResource ValueStyle}"/>
|
|
|
|
<TextBlock Grid.Row="1" Grid.Column="0" Text="轴2" Style="{StaticResource LabelStyle}"/>
|
|
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding AbsPos2}" Style="{StaticResource ValueStyle}"/>
|
|
|
|
<TextBlock Grid.Row="2" Grid.Column="0" Text="轴3" Style="{StaticResource LabelStyle}"/>
|
|
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding AbsPos3}" Style="{StaticResource ValueStyle}"/>
|
|
|
|
<TextBlock Grid.Row="3" Grid.Column="0" Text="轴4" Style="{StaticResource LabelStyle}"/>
|
|
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding AbsPos4}" Style="{StaticResource ValueStyle}"/>
|
|
|
|
<TextBlock Grid.Row="4" Grid.Column="0" Text="轴5" Style="{StaticResource LabelStyle}"/>
|
|
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding AbsPos5}" Style="{StaticResource ValueStyle}"/>
|
|
|
|
<TextBlock Grid.Row="5" Grid.Column="0" Text="轴6" Style="{StaticResource LabelStyle}"/>
|
|
<TextBlock Grid.Row="5" Grid.Column="1" Text="{Binding AbsPos6}" Style="{StaticResource ValueStyle}"/>
|
|
</Grid>
|
|
</GroupBox>
|
|
|
|
<!-- 寸动目标位置 -->
|
|
<GroupBox Grid.Column="1">
|
|
<GroupBox.Header>
|
|
<TextBlock Text="寸动目标" Style="{StaticResource HeaderStyle}"/>
|
|
</GroupBox.Header>
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition/>
|
|
<RowDefinition/>
|
|
<RowDefinition/>
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="X目标" Style="{StaticResource LabelStyle}"/>
|
|
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding TargetX}" Margin="5"/>
|
|
<Button Grid.Row="0" Grid.Column="2" Content="移动" Width="60" Margin="5,0,5,0" Command="{Binding MoveXCommand}"/>
|
|
<Button Grid.Row="0" Grid.Column="3" Content="停止" Width="60" Margin="0,0,5,0" Style="{StaticResource StopButtonStyle}" Command="{Binding StopXCommand}"/>
|
|
|
|
<TextBlock Grid.Row="1" Grid.Column="0" Text="Y目标" Style="{StaticResource LabelStyle}"/>
|
|
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding TargetY}" Margin="5"/>
|
|
<Button Grid.Row="1" Grid.Column="2" Content="移动" Width="60" Margin="5,0,5,0" Command="{Binding MoveYCommand}"/>
|
|
<Button Grid.Row="1" Grid.Column="3" Content="停止" Width="60" Margin="0,0,5,0" Style="{StaticResource StopButtonStyle}" Command="{Binding StopYCommand}"/>
|
|
|
|
<TextBlock Grid.Row="2" Grid.Column="0" Text="Z目标" Style="{StaticResource LabelStyle}"/>
|
|
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding TargetZ}" Margin="5"/>
|
|
<Button Grid.Row="2" Grid.Column="2" Content="移动" Width="60" Margin="5,0,5,0" Command="{Binding MoveZCommand}"/>
|
|
<Button Grid.Row="2" Grid.Column="3" Content="停止" Width="60" Margin="0,0,5,0" Style="{StaticResource StopButtonStyle}" Command="{Binding StopZCommand}"/>
|
|
</Grid>
|
|
</GroupBox>
|
|
</Grid>
|
|
|
|
<!-- 右侧:控制面板 -->
|
|
<Grid Grid.Row="1" Grid.Column="1" Margin="6,6,0,6">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<StackPanel Grid.Row="0">
|
|
<Button Content="↩ 回原点" Command="{Binding GoHomeCommand}"/>
|
|
<Button Content="⬆ 三轴同动" Command="{Binding MoveAllCommand}"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel Grid.Row="1" VerticalAlignment="Center">
|
|
<TextBlock Text="单轴控制" Style="{StaticResource LabelStyle}" HorizontalAlignment="Center" Margin="0,10,0,10"/>
|
|
<Button Content="↕ X 移动" Command="{Binding MoveXCommand}"/>
|
|
<Button Content="↔ Y 移动" Command="{Binding MoveYCommand}"/>
|
|
<Button Content="↕ Z 移动" Command="{Binding MoveZCommand}"/>
|
|
</StackPanel>
|
|
|
|
<Button Grid.Row="2" Content="❌ 急 停" Style="{StaticResource EmergencyButtonStyle}" FontWeight="Bold" FontSize="18" Height="55" Margin="0" Command="{Binding EmergencyStopCommand}"/>
|
|
</Grid>
|
|
</Grid>
|
|
</TabItem>
|
|
|
|
<!-- ======================= 2. 设置 ======================= -->
|
|
<TabItem Header="设置">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
<StackPanel Margin="10">
|
|
|
|
<!-- 移动速度设定(脉冲) -->
|
|
<GroupBox>
|
|
<GroupBox.Header>
|
|
<TextBlock Text="移动速度设定" Style="{StaticResource HeaderStyle}"/>
|
|
</GroupBox.Header>
|
|
<StackPanel Margin="5">
|
|
<Grid Margin="0,0,0,6">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="160"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="X速度(脉冲)" Style="{StaticResource LabelStyle}"/>
|
|
<TextBox Grid.Column="1" Text="{Binding SpeedX}"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,6">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="160"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="Y速度(脉冲)" Style="{StaticResource LabelStyle}"/>
|
|
<TextBox Grid.Column="1" Text="{Binding SpeedY}"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,6">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="160"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="Z速度(脉冲)" Style="{StaticResource LabelStyle}"/>
|
|
<TextBox Grid.Column="1" Text="{Binding SpeedZ}"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,10">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="160"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="回零速度(脉冲)" Style="{StaticResource LabelStyle}"/>
|
|
<TextBox Grid.Column="1" Text="{Binding HomeSpeed}"/>
|
|
</Grid>
|
|
<Button Content="速度设定" Width="110" HorizontalAlignment="Left" Margin="0" Command="{Binding SetSpeedCommand}"/>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
|
|
<!-- 零点设定 -->
|
|
<GroupBox>
|
|
<GroupBox.Header>
|
|
<TextBlock Text="零点设定" Style="{StaticResource HeaderStyle}"/>
|
|
</GroupBox.Header>
|
|
<StackPanel Margin="5">
|
|
<Grid Margin="0,0,0,6">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="120"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="X零点" Style="{StaticResource LabelStyle}"/>
|
|
<TextBox Grid.Column="1" Text="{Binding HomeX}"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,6">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="120"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="Y零点" Style="{StaticResource LabelStyle}"/>
|
|
<TextBox Grid.Column="1" Text="{Binding HomeY}"/>
|
|
</Grid>
|
|
<Grid Margin="0,0,0,10">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="120"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Text="Z零点" Style="{StaticResource LabelStyle}"/>
|
|
<TextBox Grid.Column="1" Text="{Binding HomeZ}"/>
|
|
</Grid>
|
|
<Button Content="零点设定" Width="110" HorizontalAlignment="Left" Margin="0" Command="{Binding SetHomeCommand}"/>
|
|
</StackPanel>
|
|
</GroupBox>
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
</TabItem>
|
|
</TabControl>
|
|
</Grid>
|
|
</UserControl>
|