添加 MX-PD-盘古 项目文件
将 MX-PD-盘古 - new 目录下的所有文件添加到主仓库
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.CarrierRecipeView"
|
||||
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:local="clr-namespace:MainShell.Recipe.View"
|
||||
xmlns:mw="http://www.maxwell-gp.com/"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="850" d:DesignWidth="800">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="300"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<GroupBox DataContext="{Binding CarrierRecipe.CarrierInfo}" Header="{DynamicResource CarrierInfo}">
|
||||
<UniformGrid Rows="7" Columns="1">
|
||||
<UniformGrid.Resources>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource TextBlockStyle}">
|
||||
|
||||
</Style>
|
||||
|
||||
</UniformGrid.Resources>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="120"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Style="{StaticResource TextBlockStyle}" Text="{DynamicResource CarrierWidth}"/>
|
||||
<mw:NumberBox Width="120" Grid.Column="1" Value="{Binding Width}" Maximum="300" Minimum="50" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
</Grid>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="120" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Style="{StaticResource TextBlockStyle}" Text="{DynamicResource CarrierHeight}"/>
|
||||
<mw:NumberBox Width="120" Grid.Column="1" Value="{Binding Height}" Maximum="300" Minimum="50" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
</Grid>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="120" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Style="{StaticResource TextBlockStyle}" Text="{DynamicResource CarrierThickness}"/>
|
||||
<mw:NumberBox Width="120" Grid.Column="1" Value="{Binding Thickness}" Maximum="300" Minimum="50" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
</Grid>
|
||||
</UniformGrid>
|
||||
</GroupBox>
|
||||
<GroupBox Grid.Column="1" Header="{DynamicResource SubstrateSelect}">
|
||||
<Grid>
|
||||
<Border BorderThickness="0,0,0,0.5" BorderBrush="{DynamicResource BorderBrush}" >
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<DataGrid x:Name="selectSubstrateInfo"
|
||||
ItemsSource="{Binding CarrierRecipe.SubstrateSelectInfos}"
|
||||
AutoGenerateColumns="False"
|
||||
CanUserSortColumns="False"
|
||||
SelectionMode="Single">
|
||||
<DataGrid.Columns>
|
||||
<DataGridComboBoxColumn Width="*" Header="{DynamicResource SubstrateRecipe}" TextBinding="{Binding SubstrateName}">
|
||||
<DataGridComboBoxColumn.EditingElementStyle>
|
||||
<Style TargetType="ComboBox">
|
||||
<Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=GroupBox}, Path=DataContext.SubstrateRecipes}" />
|
||||
<Setter Property="DisplayMemberPath" Value="RecipeName"/>
|
||||
<Setter Property="SelectedIndex" Value="0"/>
|
||||
</Style>
|
||||
</DataGridComboBoxColumn.EditingElementStyle>
|
||||
</DataGridComboBoxColumn>
|
||||
<DataGridTextColumn Width="*" Header="{DynamicResource Description}" Binding="{Binding Description}"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,10">
|
||||
<Button Content="{DynamicResource Add}" Style="{StaticResource StartButtonStyle}" Click="{mw:Action AddSubstrate}"/>
|
||||
<Button Content="{DynamicResource Delete}" Style="{StaticResource CloseButtonStyle}"
|
||||
Command="{Binding RemoveSubstrateCommand}"
|
||||
CommandParameter="{Binding ElementName=selectSubstrateInfo, Path=SelectedItem}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
<GroupBox Grid.Row="1" Header="{DynamicResource LogisticsInfo}">
|
||||
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// CarrierRecipeView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class CarrierRecipeView : UserControl
|
||||
{
|
||||
public CarrierRecipeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,292 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Window x:Class="MainShell.Recipe.View.MarkCoordinatePreviewWindow"
|
||||
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"
|
||||
mc:Ignorable="d"
|
||||
Title="{DynamicResource MarkCoordinatePreviewWindowTitle}"
|
||||
Width="940"
|
||||
Height="720"
|
||||
MinWidth="860"
|
||||
MinHeight="620"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
Background="#F3F6FB">
|
||||
<Window.Resources>
|
||||
<SolidColorBrush x:Key="PageBackgroundBrush" Color="#F3F6FB"/>
|
||||
<SolidColorBrush x:Key="PanelBorderBrush" Color="#D8E0EC"/>
|
||||
<SolidColorBrush x:Key="PanelHeaderBrush" Color="#F7FAFD"/>
|
||||
<SolidColorBrush x:Key="PrimaryBrush" Color="#2F5DAA"/>
|
||||
<SolidColorBrush x:Key="PrimaryDarkBrush" Color="#244C8D"/>
|
||||
<SolidColorBrush x:Key="PrimaryLightBrush" Color="#EAF1FF"/>
|
||||
<SolidColorBrush x:Key="BodyTextBrush" Color="#26415E"/>
|
||||
<SolidColorBrush x:Key="MutedTextBrush" Color="#6E7F96"/>
|
||||
<SolidColorBrush x:Key="DangerBrush" Color="#D95B69"/>
|
||||
<SolidColorBrush x:Key="DangerPanelBrush" Color="#FFF8F8"/>
|
||||
<SolidColorBrush x:Key="DangerBorderBrush" Color="#FFD8D8"/>
|
||||
|
||||
<Style x:Key="CardBorderStyle" TargetType="Border">
|
||||
<Setter Property="Background" Value="White"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource PanelBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="CornerRadius" Value="3"/>
|
||||
<Setter Property="SnapsToDevicePixels" Value="True"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="HeaderTitleStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="22"/>
|
||||
<Setter Property="FontWeight" Value="Bold"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="HeaderSubtitleStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="13"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource MutedTextBrush}"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="SectionTitleStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="16"/>
|
||||
<Setter Property="FontWeight" Value="Bold"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MetricLabelStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource MutedTextBrush}"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MetricValueStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="28"/>
|
||||
<Setter Property="FontWeight" Value="Bold"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PrimaryActionButtonStyle" TargetType="Button">
|
||||
<Setter Property="Foreground" Value="White"/>
|
||||
<Setter Property="Background" Value="{StaticResource PrimaryBrush}"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource PrimaryBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="Padding" Value="18,8"/>
|
||||
<Setter Property="Height" Value="40"/>
|
||||
<Setter Property="MinWidth" Value="112"/>
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="Cursor" Value="Hand"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="3"
|
||||
SnapsToDevicePixels="True">
|
||||
<ContentPresenter HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Background" Value="{StaticResource PrimaryDarkBrush}"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource PrimaryDarkBrush}"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsPressed" Value="True">
|
||||
<Setter Property="Background" Value="#1D3F74"/>
|
||||
<Setter Property="BorderBrush" Value="#1D3F74"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsEnabled" Value="False">
|
||||
<Setter Property="Opacity" Value="0.55"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="GhostActionButtonStyle" TargetType="Button" BasedOn="{StaticResource PrimaryActionButtonStyle}">
|
||||
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}"/>
|
||||
<Setter Property="Background" Value="White"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource PanelBorderBrush}"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="3"
|
||||
SnapsToDevicePixels="True">
|
||||
<ContentPresenter HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Background" Value="{StaticResource PrimaryLightBrush}"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource PrimaryBrush}"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsPressed" Value="True">
|
||||
<Setter Property="Background" Value="#DDE9FF"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsEnabled" Value="False">
|
||||
<Setter Property="Opacity" Value="0.55"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style TargetType="DataGrid">
|
||||
<Setter Property="Background" Value="White"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource PanelBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource BodyTextBrush}"/>
|
||||
<Setter Property="RowBackground" Value="White"/>
|
||||
<Setter Property="AlternatingRowBackground" Value="#FAFCFF"/>
|
||||
<Setter Property="GridLinesVisibility" Value="Horizontal"/>
|
||||
<Setter Property="HorizontalGridLinesBrush" Value="#E4E9F2"/>
|
||||
<Setter Property="VerticalGridLinesBrush" Value="#E4E9F2"/>
|
||||
<Setter Property="HeadersVisibility" Value="Column"/>
|
||||
<Setter Property="CanUserAddRows" Value="False"/>
|
||||
<Setter Property="CanUserDeleteRows" Value="False"/>
|
||||
<Setter Property="CanUserResizeRows" Value="False"/>
|
||||
<Setter Property="CanUserReorderColumns" Value="False"/>
|
||||
<Setter Property="CanUserSortColumns" Value="False"/>
|
||||
<Setter Property="IsReadOnly" Value="True"/>
|
||||
<Setter Property="RowHeaderWidth" Value="0"/>
|
||||
<Setter Property="AutoGenerateColumns" Value="False"/>
|
||||
<Setter Property="SelectionMode" Value="Single"/>
|
||||
<Setter Property="SelectionUnit" Value="FullRow"/>
|
||||
<Setter Property="RowHeight" Value="42"/>
|
||||
<Setter Property="ColumnHeaderHeight" Value="46"/>
|
||||
</Style>
|
||||
|
||||
<Style TargetType="DataGridColumnHeader">
|
||||
<Setter Property="Foreground" Value="{StaticResource PrimaryBrush}"/>
|
||||
<Setter Property="FontSize" Value="14"/>
|
||||
<Setter Property="FontWeight" Value="Bold"/>
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
<Setter Property="Background" Value="{StaticResource PanelHeaderBrush}"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource PanelBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="0,0,0,1"/>
|
||||
</Style>
|
||||
|
||||
<Style TargetType="DataGridCell">
|
||||
<Setter Property="Padding" Value="8,4"/>
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
|
||||
<Grid Background="{StaticResource PageBackgroundBrush}" Margin="16">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Grid.Row="0" Style="{StaticResource CardBorderStyle}" Padding="18,16">
|
||||
<DockPanel LastChildFill="True">
|
||||
<Button DockPanel.Dock="Right"
|
||||
Content="{DynamicResource MarkCoordinatePreviewClose}"
|
||||
Style="{StaticResource GhostActionButtonStyle}"
|
||||
Command="{Binding CloseCommand}"
|
||||
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=Window}}"/>
|
||||
|
||||
<StackPanel>
|
||||
<TextBlock Text="{DynamicResource MarkCoordinatePreviewWindowTitle}"
|
||||
Style="{StaticResource HeaderTitleStyle}"/>
|
||||
<TextBlock Text="Preview"
|
||||
Style="{StaticResource HeaderSubtitleStyle}"
|
||||
Margin="0,4,0,0"/>
|
||||
</StackPanel>
|
||||
</DockPanel>
|
||||
</Border>
|
||||
|
||||
<Grid Grid.Row="1" Margin="0,14,0,14">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="260"/>
|
||||
<ColumnDefinition Width="12"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Border Grid.Column="0" Style="{StaticResource CardBorderStyle}" Padding="18,16">
|
||||
<StackPanel>
|
||||
<TextBlock Text="{DynamicResource MarkCoordinatePreviewPointCountLabel}"
|
||||
Style="{StaticResource MetricLabelStyle}"/>
|
||||
<TextBlock Text="{Binding PointCount}"
|
||||
Style="{StaticResource MetricValueStyle}"
|
||||
Margin="0,6,0,0"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Column="2" Style="{StaticResource CardBorderStyle}" Padding="18,16">
|
||||
<StackPanel>
|
||||
<TextBlock Text="Read-only data view"
|
||||
Style="{StaticResource SectionTitleStyle}"/>
|
||||
<TextBlock Text="The table below mirrors the generated or imported coordinate set and does not edit source data."
|
||||
Foreground="{StaticResource BodyTextBrush}"
|
||||
TextWrapping="Wrap"
|
||||
Margin="0,8,0,0"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
<Border Grid.Row="2" Style="{StaticResource CardBorderStyle}" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<DockPanel Grid.Row="0" Background="{StaticResource PanelHeaderBrush}" LastChildFill="False">
|
||||
<TextBlock Margin="18,12"
|
||||
Text="{DynamicResource MarkCoordinatePreviewWindowTitle}"
|
||||
Style="{StaticResource SectionTitleStyle}"/>
|
||||
<TextBlock Margin="0,12,18,12"
|
||||
DockPanel.Dock="Right"
|
||||
Foreground="{StaticResource MutedTextBrush}"
|
||||
VerticalAlignment="Center"
|
||||
Text="{Binding PointCount, StringFormat=Total: {0}}"/>
|
||||
</DockPanel>
|
||||
|
||||
<DataGrid Grid.Row="1"
|
||||
Margin="16"
|
||||
ItemsSource="{Binding Points}"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkCoordinatePreviewIndex}" Width="90" Binding="{Binding Index}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkCoordinatePreviewPointName}" Width="2*" Binding="{Binding PointName}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkCoordinatePreviewRow}" Width="*" Binding="{Binding Row}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkCoordinatePreviewCol}" Width="*" Binding="{Binding Col}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkCoordinatePreviewTheoryX}" Width="*" Binding="{Binding TheoryX, StringFormat={}{0:F4}}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkCoordinatePreviewTheoryY}" Width="*" Binding="{Binding TheoryY, StringFormat={}{0:F4}}"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="3"
|
||||
Margin="0,14,0,0"
|
||||
Padding="14,10"
|
||||
Background="{StaticResource DangerPanelBrush}"
|
||||
BorderBrush="{StaticResource DangerBorderBrush}"
|
||||
BorderThickness="1"
|
||||
CornerRadius="3">
|
||||
<DockPanel LastChildFill="True">
|
||||
<Button DockPanel.Dock="Right"
|
||||
Content="{DynamicResource MarkCoordinatePreviewClose}"
|
||||
Style="{StaticResource GhostActionButtonStyle}"
|
||||
Margin="12,0,0,0"
|
||||
Command="{Binding CloseCommand}"
|
||||
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=Window}}"/>
|
||||
<TextBlock Text="{DynamicResource MarkCoordinatePreviewReadOnlyTip}"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{StaticResource DangerBrush}"
|
||||
TextWrapping="Wrap"/>
|
||||
</DockPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,23 @@
|
||||
using System.Windows;
|
||||
using MainShell.Recipe.ViewModel;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
public partial class MarkCoordinatePreviewWindow : Window
|
||||
{
|
||||
public MarkCoordinatePreviewWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
protected override void OnClosed(System.EventArgs e)
|
||||
{
|
||||
if (DataContext is MarkCoordinatePreviewWindowModel viewModel)
|
||||
{
|
||||
viewModel.Cleanup();
|
||||
}
|
||||
|
||||
base.OnClosed(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,459 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.MarkTeachView"
|
||||
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:behavior="clr-namespace:MainShell.Common.ControlAttribute"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450"
|
||||
d:DesignWidth="800">
|
||||
|
||||
<UserControl.Resources>
|
||||
<SolidColorBrush x:Key="MarkTeachPageBackgroundBrush" Color="#F4F7FB"/>
|
||||
<SolidColorBrush x:Key="MarkTeachCardBackgroundBrush" Color="#FFFFFF"/>
|
||||
<SolidColorBrush x:Key="MarkTeachCardBorderBrush" Color="#D6E0EA"/>
|
||||
<SolidColorBrush x:Key="MarkTeachHeaderBackgroundBrush" Color="#EEF3F8"/>
|
||||
<SolidColorBrush x:Key="MarkTeachHeaderForegroundBrush" Color="#2E5FA7"/>
|
||||
<SolidColorBrush x:Key="MarkTeachBodyTextBrush" Color="#425466"/>
|
||||
<SolidColorBrush x:Key="MarkTeachMutedTextBrush" Color="#6B7B8D"/>
|
||||
<SolidColorBrush x:Key="MarkTeachNumberBrush" Color="#264B86"/>
|
||||
<SolidColorBrush x:Key="MarkTeachTabSelectedBrush" Color="#E8F0FC"/>
|
||||
<SolidColorBrush x:Key="MarkTeachTabHoverBrush" Color="#F4F8FE"/>
|
||||
<SolidColorBrush x:Key="MarkTeachTabNormalBrush" Color="#D6DDE7"/>
|
||||
|
||||
<Style x:Key="MarkTeachSectionGroupStyle" TargetType="GroupBox">
|
||||
<Setter Property="BorderBrush" Value="{StaticResource MarkTeachCardBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="Background" Value="{StaticResource MarkTeachCardBackgroundBrush}"/>
|
||||
<Setter Property="Margin" Value="0,0,0,12"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="GroupBox">
|
||||
<Border Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Border Background="{StaticResource MarkTeachHeaderBackgroundBrush}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="0,0,0,1"
|
||||
Padding="12,8">
|
||||
<ContentPresenter ContentSource="Header" HorizontalAlignment="Center"/>
|
||||
</Border>
|
||||
<ContentPresenter Grid.Row="1"
|
||||
Margin="12,12,12,12"
|
||||
ContentSource="Content"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="HeaderTemplate">
|
||||
<Setter.Value>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding}"
|
||||
FontSize="15"
|
||||
FontWeight="Bold"
|
||||
Foreground="{StaticResource MarkTeachHeaderForegroundBrush}"/>
|
||||
</DataTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachFieldLabelStyle" TargetType="TextBlock">
|
||||
<Setter Property="Foreground" Value="{StaticResource MarkTeachBodyTextBrush}"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="Margin" Value="0,0,0,6"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachReadOnlyTextBoxStyle" TargetType="TextBox">
|
||||
<Setter Property="Height" Value="34"/>
|
||||
<Setter Property="Padding" Value="12,0"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource MarkTeachCardBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="Background" Value="White"/>
|
||||
<Setter Property="Foreground" Value="#2F3E4E"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachInputTextBoxStyle" TargetType="TextBox" BasedOn="{StaticResource MarkTeachReadOnlyTextBoxStyle}">
|
||||
<Setter Property="Height" Value="38"/>
|
||||
<Setter Property="MinWidth" Value="96"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachPrimaryActionButtonStyle" TargetType="Button" BasedOn="{StaticResource MarkPrimaryActionButtonStyle}">
|
||||
|
||||
<Setter Property="Height" Value="38"/>
|
||||
<Setter Property="FontSize" Value="13"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachOutlineActionButtonStyle" TargetType="Button" BasedOn="{StaticResource MarkOutlineActionButtonStyle}">
|
||||
|
||||
<Setter Property="Height" Value="38"/>
|
||||
<Setter Property="FontSize" Value="13"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachNeutralActionButtonStyle" TargetType="Button" BasedOn="{StaticResource MarkNeutralActionButtonStyle}">
|
||||
|
||||
<Setter Property="Height" Value="38"/>
|
||||
<Setter Property="FontSize" Value="13"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachDangerOutlineButtonStyle" TargetType="Button" BasedOn="{StaticResource MarkDangerOutlineButtonStyle}">
|
||||
|
||||
<Setter Property="Height" Value="38"/>
|
||||
<Setter Property="FontSize" Value="13"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachHintTextStyle" TargetType="TextBlock">
|
||||
<Setter Property="TextWrapping" Value="Wrap"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource MarkTeachBodyTextBrush}"/>
|
||||
<Setter Property="LineHeight" Value="22"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachCaptionStyle" TargetType="TextBlock">
|
||||
<Setter Property="Foreground" Value="{StaticResource MarkTeachMutedTextBrush}"/>
|
||||
<Setter Property="FontSize" Value="12"/>
|
||||
<Setter Property="Margin" Value="0,0,0,10"/>
|
||||
<Setter Property="TextWrapping" Value="Wrap"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachInlineCaptionStyle" TargetType="TextBlock" BasedOn="{StaticResource MarkTeachCaptionStyle}">
|
||||
<Setter Property="Margin" Value="0"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachStatTitleStyle" TargetType="TextBlock">
|
||||
<Setter Property="Foreground" Value="{StaticResource MarkTeachMutedTextBrush}"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachStatValueStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="24"/>
|
||||
<Setter Property="FontWeight" Value="Bold"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource MarkTeachNumberBrush}"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="MarkTeachTabItemStyle" TargetType="TabItem">
|
||||
<Setter Property="Padding" Value="34,12"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource MarkTeachBodyTextBrush}"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="Background" Value="{StaticResource MarkTeachTabNormalBrush}"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource MarkTeachCardBorderBrush}"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="TabItem">
|
||||
<Border x:Name="TabBorder"
|
||||
Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="0,2,1,0"
|
||||
Margin="0,0,1,0"
|
||||
Padding="{TemplateBinding Padding}">
|
||||
<ContentPresenter HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
ContentSource="Header"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter TargetName="TabBorder" Property="Background" Value="White"/>
|
||||
<Setter TargetName="TabBorder" Property="BorderBrush" Value="{StaticResource MarkTeachHeaderForegroundBrush}"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource MarkTeachHeaderForegroundBrush}"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter TargetName="TabBorder" Property="Background" Value="{StaticResource MarkTeachTabHoverBrush}"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</UserControl.Resources>
|
||||
|
||||
<Grid Background="{StaticResource MarkTeachPageBackgroundBrush}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Border Grid.Row="1"
|
||||
Margin="12"
|
||||
Background="White"
|
||||
BorderBrush="{StaticResource MarkTeachCardBorderBrush}"
|
||||
BorderThickness="1">
|
||||
<TabControl Background="Transparent"
|
||||
BorderThickness="0"
|
||||
Padding="0"
|
||||
ItemContainerStyle="{StaticResource MarkTeachTabItemStyle}">
|
||||
<TabItem Header="{DynamicResource MarkTeachTabTeach}">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Disabled">
|
||||
<Grid Margin="20,16,20,12">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<GroupBox Grid.Row="0"
|
||||
Style="{StaticResource MarkTeachSectionGroupStyle}"
|
||||
Header="{DynamicResource MakeModel}">
|
||||
<StackPanel>
|
||||
<TextBlock Text="{DynamicResource MarkTeachTeachSectionHint}"
|
||||
Style="{StaticResource MarkTeachCaptionStyle}"/>
|
||||
<WrapPanel Orientation="Horizontal">
|
||||
<Button Style="{StaticResource MarkTeachPrimaryActionButtonStyle}"
|
||||
Content="{DynamicResource VisionParSet}"
|
||||
Command="{Binding VisionParSetCmd}"
|
||||
Margin="0,0,10,0"/>
|
||||
<Button Style="{StaticResource MarkTeachOutlineActionButtonStyle}"
|
||||
Content="{DynamicResource MarkModel}"
|
||||
Command="{Binding MarkModelCmd}"
|
||||
Margin="0"/>
|
||||
</WrapPanel>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Grid.Row="1"
|
||||
Style="{StaticResource MarkTeachSectionGroupStyle}"
|
||||
Header="{DynamicResource MarkTeachOperationsHeader}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<WrapPanel Grid.Row="0" Orientation="Horizontal" Margin="0,0,0,12">
|
||||
<Button Content="{DynamicResource AddMark}"
|
||||
Style="{StaticResource MarkTeachPrimaryActionButtonStyle}"
|
||||
Command="{Binding AddMarkCmd}"
|
||||
Margin="0,0,10,10"/>
|
||||
<Button Content="{DynamicResource DeleteMark}"
|
||||
Style="{StaticResource MarkTeachDangerOutlineButtonStyle}"
|
||||
Command="{Binding DeleteMarkCmd}"
|
||||
Margin="0,0,10,10"/>
|
||||
<Button Content="{DynamicResource TeachPos}"
|
||||
Style="{StaticResource MarkTeachNeutralActionButtonStyle}"
|
||||
Command="{Binding TeachMarkCmd}"
|
||||
Margin="0,0,10,10"/>
|
||||
<Button Content="{DynamicResource MoveToCurrentPos}"
|
||||
Style="{StaticResource MarkTeachNeutralActionButtonStyle}"
|
||||
Command="{Binding MoveToMarkCmd}"
|
||||
Margin="0,0,10,10"/>
|
||||
<CheckBox Content="{DynamicResource MarkTeachReferenceTeach}"
|
||||
IsChecked="{Binding IsTeachPose, UpdateSourceTrigger=PropertyChanged}"
|
||||
VerticalAlignment="Center"
|
||||
Margin="8,0,2,10"/>
|
||||
</WrapPanel>
|
||||
|
||||
<DataGrid Grid.Row="1"
|
||||
Margin="0"
|
||||
MinHeight="180"
|
||||
ItemsSource="{Binding MarkDatas}"
|
||||
SelectedItem="{Binding SelectedMarkData}"
|
||||
AutoGenerateColumns="False"
|
||||
CanUserAddRows="False">
|
||||
<DataGrid.Resources>
|
||||
<Style x:Key="NumericOnlyEditingTextBoxStyle" TargetType="TextBox">
|
||||
<Setter Property="behavior:ControlBehavior.IsNumericOnly" Value="True"/>
|
||||
</Style>
|
||||
</DataGrid.Resources>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTemplateColumn Header="{DynamicResource InUse}" Width="58">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<CheckBox
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
IsChecked="{Binding IsEnabled, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkTeachBaseX}" Width="*" Binding="{Binding BasePos.X}" EditingElementStyle="{StaticResource NumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkTeachBaseY}" Width="*" Binding="{Binding BasePos.Y}" EditingElementStyle="{StaticResource NumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkTeachCameraX}" Width="*" Binding="{Binding CameraPos.X}" EditingElementStyle="{StaticResource NumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkTeachCameraY}" Width="*" Binding="{Binding CameraPos.Y}" EditingElementStyle="{StaticResource NumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridComboBoxColumn Width="2*" TextBinding="{Binding TemplateName}" Header="{DynamicResource MarkTeachTemplateName}">
|
||||
<DataGridComboBoxColumn.EditingElementStyle>
|
||||
<Style TargetType="ComboBox">
|
||||
<Setter Property="ItemsSource" Value="{Binding DataContext.AvailableTemplates, RelativeSource={RelativeSource AncestorType=UserControl}}" />
|
||||
<Setter Property="DisplayMemberPath" Value="TemplateName"/>
|
||||
<Setter Property="SelectedIndex" Value="0"/>
|
||||
</Style>
|
||||
</DataGridComboBoxColumn.EditingElementStyle>
|
||||
</DataGridComboBoxColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
|
||||
<Border Grid.Row="2"
|
||||
Padding="12,10"
|
||||
Background="#F8FBFF"
|
||||
BorderBrush="{StaticResource MarkTeachCardBorderBrush}"
|
||||
BorderThickness="1">
|
||||
<TextBlock Text="{DynamicResource MarkTeachTeachBottomHint}"
|
||||
Style="{StaticResource MarkTeachHintTextStyle}"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="{DynamicResource MarkTeachTabCoordinate}">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Disabled">
|
||||
<Grid Margin="20,16,20,12">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<GroupBox Grid.Row="0"
|
||||
Style="{StaticResource MarkTeachSectionGroupStyle}"
|
||||
Header="{DynamicResource MarkTeachCoordinateSourceHeader}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="130"/>
|
||||
<ColumnDefinition Width="14"/>
|
||||
<ColumnDefinition Width="130"/>
|
||||
<ColumnDefinition Width="14"/>
|
||||
<ColumnDefinition Width="96"/>
|
||||
<ColumnDefinition Width="14"/>
|
||||
<ColumnDefinition Width="96"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Row="0"
|
||||
Grid.ColumnSpan="8"
|
||||
Text="{DynamicResource MarkTeachCoordinateActionHint}"
|
||||
Style="{StaticResource MarkTeachCaptionStyle}"/>
|
||||
|
||||
<TextBlock Grid.Row="1" Grid.Column="0" Text="{DynamicResource MarkTeachPitchX}" Style="{StaticResource MarkTeachFieldLabelStyle}"/>
|
||||
<TextBlock Grid.Row="1" Grid.Column="2" Text="{DynamicResource MarkTeachPitchY}" Style="{StaticResource MarkTeachFieldLabelStyle}"/>
|
||||
<TextBlock Grid.Row="1" Grid.Column="4" Text="{DynamicResource MarkTeachRows}" Style="{StaticResource MarkTeachFieldLabelStyle}"/>
|
||||
<TextBlock Grid.Row="1" Grid.Column="6" Text="{DynamicResource MarkTeachCols}" Style="{StaticResource MarkTeachFieldLabelStyle}"/>
|
||||
|
||||
<TextBox Grid.Row="2" Grid.Column="0"
|
||||
Style="{StaticResource MarkTeachInputTextBoxStyle}"
|
||||
Text="{Binding CoordinateGenerationState.PitchX, UpdateSourceTrigger=PropertyChanged}"
|
||||
behavior:ControlBehavior.IsNumericOnly="True"/>
|
||||
<TextBox Grid.Row="2" Grid.Column="2"
|
||||
Style="{StaticResource MarkTeachInputTextBoxStyle}"
|
||||
Text="{Binding CoordinateGenerationState.PitchY, UpdateSourceTrigger=PropertyChanged}"
|
||||
behavior:ControlBehavior.IsNumericOnly="True"/>
|
||||
<TextBox Grid.Row="2" Grid.Column="4"
|
||||
Style="{StaticResource MarkTeachInputTextBoxStyle}"
|
||||
Text="{Binding CoordinateGenerationState.Rows, UpdateSourceTrigger=PropertyChanged}"
|
||||
behavior:ControlBehavior.IsNumericOnly="True"/>
|
||||
<TextBox Grid.Row="2" Grid.Column="6"
|
||||
Style="{StaticResource MarkTeachInputTextBoxStyle}"
|
||||
Text="{Binding CoordinateGenerationState.Cols, UpdateSourceTrigger=PropertyChanged}"
|
||||
behavior:ControlBehavior.IsNumericOnly="True"/>
|
||||
|
||||
<StackPanel Grid.Row="3"
|
||||
Grid.ColumnSpan="8"
|
||||
Margin="0,14,0,0">
|
||||
<TextBlock Text="{DynamicResource MarkTeachCoordinateActionHeader}"
|
||||
Style="{StaticResource MarkTeachFieldLabelStyle}"
|
||||
Margin="0,0,0,8"/>
|
||||
<WrapPanel HorizontalAlignment="Left"
|
||||
Orientation="Horizontal">
|
||||
<Button Content="{DynamicResource MarkTeachGenerateCoordinates}"
|
||||
Style="{StaticResource MarkTeachPrimaryActionButtonStyle}"
|
||||
Command="{Binding GenerateCoordinatesCmd}"
|
||||
Margin="0,0,10,10"/>
|
||||
<Button Content="{DynamicResource MarkTeachImportCoordinates}"
|
||||
Style="{StaticResource MarkTeachOutlineActionButtonStyle}"
|
||||
Command="{Binding ImportCoordinatesCmd}"
|
||||
Margin="0,0,10,10"/>
|
||||
<Button Content="{DynamicResource MarkCoordinatePreviewOpen}"
|
||||
Style="{StaticResource MarkTeachOutlineActionButtonStyle}"
|
||||
Command="{Binding ShowCoordinatePreviewCmd}"
|
||||
Margin="0,0,10,10"/>
|
||||
<Button Content="{DynamicResource MarkTeachClearCoordinates}"
|
||||
Style="{StaticResource MarkTeachDangerOutlineButtonStyle}"
|
||||
Command="{Binding ClearCoordinatesCmd}"
|
||||
Margin="0,0,0,10"/>
|
||||
</WrapPanel>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Grid.Row="1"
|
||||
Style="{StaticResource MarkTeachSectionGroupStyle}"
|
||||
Header="{DynamicResource MarkTeachCoordinateDetailsHeader}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Grid.Row="0"
|
||||
Margin="0,0,0,12"
|
||||
Orientation="Horizontal"
|
||||
HorizontalAlignment="Right">
|
||||
<TextBlock Text="{DynamicResource MarkTeachCoordinateCurrentDisplayCount}"
|
||||
Style="{StaticResource MarkTeachInlineCaptionStyle}"/>
|
||||
<TextBlock Text="{Binding CoordinatePreviewPoints.Count}"
|
||||
Foreground="{StaticResource MarkTeachHeaderForegroundBrush}"
|
||||
FontWeight="Bold"
|
||||
VerticalAlignment="Center"/>
|
||||
</StackPanel>
|
||||
|
||||
<Grid Grid.Row="1">
|
||||
<DataGrid Margin="0"
|
||||
MinHeight="320"
|
||||
ItemsSource="{Binding CoordinatePreviewPoints}"
|
||||
AutoGenerateColumns="False"
|
||||
CanUserAddRows="False"
|
||||
CanUserDeleteRows="False"
|
||||
IsReadOnly="True">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkTeachCoordinateIndex}" Width="78" Binding="{Binding Index}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkTeachCoordinatePointName}" Width="2*" Binding="{Binding PointName}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkTeachCoordinateRowHeader}" Width="*" Binding="{Binding Row}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkTeachCoordinateColHeader}" Width="*" Binding="{Binding Col}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkTeachCoordinateTheoryX}" Width="*" Binding="{Binding TheoryX, StringFormat={}{0:0.####}}"/>
|
||||
<DataGridTextColumn Header="{DynamicResource MarkTeachCoordinateTheoryY}" Width="*" Binding="{Binding TheoryY, StringFormat={}{0:0.####}}"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<TextBlock HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Text="{DynamicResource MarkTeachCoordinateEmptyHint}"
|
||||
Foreground="#C1C8D2"
|
||||
FontSize="18"
|
||||
IsHitTestVisible="False">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="Visibility" Value="Collapsed"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding CoordinatePreviewPoints.Count}" Value="0">
|
||||
<Setter Property="Visibility" Value="Visible"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</Border>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// MarkTeachView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class MarkTeachView : UserControl
|
||||
{
|
||||
public MarkTeachView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,503 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.PidRecipeEditorView"
|
||||
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:behavior="clr-namespace:MainShell.Common.ControlAttribute"
|
||||
xmlns:mw="http://www.maxwell-gp.com/"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="700"
|
||||
d:DesignWidth="1180">
|
||||
<UserControl.Resources>
|
||||
<SolidColorBrush x:Key="PidPageBackgroundBrush" Color="#F4F7FB"/>
|
||||
<SolidColorBrush x:Key="PidCardBackgroundBrush" Color="#FFFFFF"/>
|
||||
<SolidColorBrush x:Key="PidCardBorderBrush" Color="#D6E0EA"/>
|
||||
<SolidColorBrush x:Key="PidHeaderBackgroundBrush" Color="#EEF3F8"/>
|
||||
<SolidColorBrush x:Key="PidHeaderForegroundBrush" Color="#2E5FA7"/>
|
||||
<SolidColorBrush x:Key="PidBodyTextBrush" Color="#425466"/>
|
||||
<SolidColorBrush x:Key="PidMutedTextBrush" Color="#6B7B8D"/>
|
||||
<SolidColorBrush x:Key="PidValueBrush" Color="#264B86"/>
|
||||
|
||||
<Style x:Key="PidSectionBorderStyle" TargetType="Border">
|
||||
<Setter Property="Background" Value="{StaticResource PidCardBackgroundBrush}"/>
|
||||
<Setter Property="BorderBrush" Value="{StaticResource PidCardBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="CornerRadius" Value="4"/>
|
||||
<Setter Property="Padding" Value="0"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidSectionTitleStyle" TargetType="TextBlock">
|
||||
<Setter Property="Foreground" Value="{StaticResource PidHeaderForegroundBrush}"/>
|
||||
<Setter Property="FontSize" Value="15"/>
|
||||
<Setter Property="FontWeight" Value="Bold"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidHintTextStyle" TargetType="TextBlock">
|
||||
<Setter Property="Foreground" Value="{StaticResource PidMutedTextBrush}"/>
|
||||
<Setter Property="FontSize" Value="12"/>
|
||||
<Setter Property="TextWrapping" Value="Wrap"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidFieldLabelStyle" TargetType="TextBlock" BasedOn="{StaticResource TextBlockStyle}">
|
||||
<Setter Property="Foreground" Value="{StaticResource PidBodyTextBrush}"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="Margin" Value="0,6,10,6"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Right"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidNumericOnlyEditingTextBoxStyle" TargetType="TextBox">
|
||||
<Setter Property="behavior:ControlBehavior.IsNumericOnly" Value="True"/>
|
||||
<Setter Property="Padding" Value="6,0"/>
|
||||
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
|
||||
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
|
||||
<Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.ActiveBorderBrushKey}}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="HorizontalContentAlignment" Value="Right"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
<Setter Property="SelectionBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
|
||||
<Setter Property="SelectionTextBrush" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidNumericDisplayTextStyle" TargetType="TextBlock">
|
||||
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
||||
<Setter Property="TextAlignment" Value="Right"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="Margin" Value="0"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidNumericOnlyTextBoxStyle" TargetType="TextBox">
|
||||
<Setter Property="behavior:ControlBehavior.IsNumericOnly" Value="True"/>
|
||||
<Setter Property="Margin" Value="4,2"/>
|
||||
<Setter Property="MinWidth" Value="120"/>
|
||||
<Setter Property="Height" Value="32"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidPrimaryButtonStyle" TargetType="Button" BasedOn="{StaticResource StartButtonStyle}">
|
||||
<Setter Property="MinWidth" Value="108"/>
|
||||
<Setter Property="Height" Value="34"/>
|
||||
<Setter Property="Margin" Value="0,0,8,0"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidDangerButtonStyle" TargetType="Button" BasedOn="{StaticResource CloseButtonStyle}">
|
||||
<Setter Property="MinWidth" Value="108"/>
|
||||
<Setter Property="Height" Value="34"/>
|
||||
<Setter Property="Margin" Value="0,0,8,0"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidFilterToggleStyle" TargetType="CheckBox" BasedOn="{StaticResource ModernSwitchStyle}">
|
||||
<Setter Property="Margin" Value="4,2"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidAxisComboBoxStyle" TargetType="ComboBox">
|
||||
<Setter Property="Margin" Value="4,2"/>
|
||||
<Setter Property="MinWidth" Value="120"/>
|
||||
<Setter Property="Height" Value="32"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidNumberBoxStyle" TargetType="mw:NumberBox">
|
||||
<Setter Property="Margin" Value="4,2"/>
|
||||
<Setter Property="MinWidth" Value="120"/>
|
||||
<Setter Property="Height" Value="32"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
<Setter Property="mw:NumericKeypadAttach.IsEnabled" Value="True"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="PidTabItemStyle" TargetType="TabItem">
|
||||
<Setter Property="Padding" Value="20,8"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource PidBodyTextBrush}"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="TabItem">
|
||||
<Border x:Name="TabBorder"
|
||||
Background="#E5E9EF"
|
||||
BorderBrush="{StaticResource PidCardBorderBrush}"
|
||||
BorderThickness="1,1,1,0"
|
||||
Margin="0,0,2,0"
|
||||
Padding="{TemplateBinding Padding}">
|
||||
<ContentPresenter HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
ContentSource="Header"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter TargetName="TabBorder" Property="Background" Value="#F4F8FE"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter TargetName="TabBorder" Property="Background" Value="White"/>
|
||||
<Setter TargetName="TabBorder" Property="BorderBrush" Value="{StaticResource PidHeaderForegroundBrush}"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource PidHeaderForegroundBrush}"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</UserControl.Resources>
|
||||
|
||||
<Grid Background="{StaticResource PidPageBackgroundBrush}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Grid.Row="0"
|
||||
Margin="12,12,12,8"
|
||||
Padding="12,8"
|
||||
Background="White"
|
||||
BorderBrush="{StaticResource PidCardBorderBrush}"
|
||||
BorderThickness="1"
|
||||
CornerRadius="4">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="220"/>
|
||||
<ColumnDefinition Width="12"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="8"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="12"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Text="选择配置组:"
|
||||
Style="{StaticResource PidFieldLabelStyle}"
|
||||
VerticalAlignment="Center"
|
||||
Margin="0,0,8,0"/>
|
||||
|
||||
<ComboBox Grid.Column="1"
|
||||
Margin="0"
|
||||
Style="{StaticResource ProcessComboBoxStyle}"
|
||||
ItemsSource="{Binding AxisPIDParameters}"
|
||||
DisplayMemberPath="Name"
|
||||
SelectedItem="{Binding SelectedPIDProfile, Mode=TwoWay}"
|
||||
VerticalAlignment="Center"/>
|
||||
|
||||
<Button Grid.Column="3"
|
||||
Content="读取"
|
||||
Style="{StaticResource PidPrimaryButtonStyle}"
|
||||
Margin="0"
|
||||
Click="{mw:Action ReadParameters}"/>
|
||||
|
||||
<Button Grid.Column="5"
|
||||
Content="写入"
|
||||
Style="{StaticResource PidPrimaryButtonStyle}"
|
||||
Margin="0"
|
||||
Click="{mw:Action WriteParameters}"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="1"
|
||||
Margin="12,0,12,8"
|
||||
Background="White"
|
||||
BorderBrush="{StaticResource PidCardBorderBrush}"
|
||||
BorderThickness="1"
|
||||
CornerRadius="4">
|
||||
<TabControl Background="Transparent"
|
||||
BorderThickness="0"
|
||||
SelectedIndex="{Binding SelectedParameterTabIndex, Mode=TwoWay}"
|
||||
ItemContainerStyle="{StaticResource PidTabItemStyle}">
|
||||
<TabItem Header="PID 参数">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Grid.Row="0"
|
||||
Margin="12,8,12,6"
|
||||
Text="每个行对应一个轴的速度与位置环参数。"
|
||||
Style="{StaticResource PidHintTextStyle}"
|
||||
Foreground="{StaticResource PidHeaderForegroundBrush}"/>
|
||||
|
||||
<ScrollViewer Grid.Row="1"
|
||||
Margin="12,0,12,8"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto">
|
||||
<DataGrid ItemsSource="{Binding SelectedAxes}"
|
||||
SelectedItem="{Binding SelectedAxisParameter, Mode=TwoWay}"
|
||||
AutoGenerateColumns="False"
|
||||
CanUserAddRows="False"
|
||||
CanUserDeleteRows="False"
|
||||
MinHeight="420"
|
||||
MinWidth="1100"
|
||||
ScrollViewer.CanContentScroll="True"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Disabled">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTemplateColumn Header="轴 (Axis)" Width="180">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding ModuleName}" VerticalAlignment="Center"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
<DataGridTemplateColumn.CellEditingTemplate>
|
||||
<DataTemplate>
|
||||
<ComboBox ItemsSource="{Binding DataContext.AxisOptions, RelativeSource={RelativeSource AncestorType=UserControl}}"
|
||||
DisplayMemberPath="AxisName"
|
||||
SelectedValuePath="AxisName"
|
||||
SelectedValue="{Binding ModuleName, UpdateSourceTrigger=PropertyChanged}"
|
||||
Style="{StaticResource PidAxisComboBoxStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellEditingTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="SLVKP" Width="100"
|
||||
Binding="{Binding PA_SLVKP.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
ElementStyle="{StaticResource PidNumericDisplayTextStyle}"
|
||||
EditingElementStyle="{StaticResource PidNumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="SLVKI" Width="100"
|
||||
Binding="{Binding PA_SLVKI.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
ElementStyle="{StaticResource PidNumericDisplayTextStyle}"
|
||||
EditingElementStyle="{StaticResource PidNumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="SLVKPSF" Width="110"
|
||||
Binding="{Binding PA_SLVKPSF.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
ElementStyle="{StaticResource PidNumericDisplayTextStyle}"
|
||||
EditingElementStyle="{StaticResource PidNumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="SLVKPIF" Width="110"
|
||||
Binding="{Binding PA_SLVKPIF.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
ElementStyle="{StaticResource PidNumericDisplayTextStyle}"
|
||||
EditingElementStyle="{StaticResource PidNumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="SLVKISF" Width="110"
|
||||
Binding="{Binding PA_SLVKISF.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
ElementStyle="{StaticResource PidNumericDisplayTextStyle}"
|
||||
EditingElementStyle="{StaticResource PidNumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="SLVKIIF" Width="110"
|
||||
Binding="{Binding PA_SLVKIIF.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
ElementStyle="{StaticResource PidNumericDisplayTextStyle}"
|
||||
EditingElementStyle="{StaticResource PidNumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="SLPKP" Width="100"
|
||||
Binding="{Binding PA_SLPKP.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
ElementStyle="{StaticResource PidNumericDisplayTextStyle}"
|
||||
EditingElementStyle="{StaticResource PidNumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="SLPKPIF" Width="110"
|
||||
Binding="{Binding PA_SLPKPIF.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
ElementStyle="{StaticResource PidNumericDisplayTextStyle}"
|
||||
EditingElementStyle="{StaticResource PidNumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="SLPKPSF" Width="110"
|
||||
Binding="{Binding PA_SLPKPSF.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
ElementStyle="{StaticResource PidNumericDisplayTextStyle}"
|
||||
EditingElementStyle="{StaticResource PidNumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="SLAFF" Width="100"
|
||||
Binding="{Binding PA_SLAFF.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
ElementStyle="{StaticResource PidNumericDisplayTextStyle}"
|
||||
EditingElementStyle="{StaticResource PidNumericOnlyEditingTextBoxStyle}"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</ScrollViewer>
|
||||
|
||||
<WrapPanel Grid.Row="2" Margin="12,0,12,12">
|
||||
<Button Content="新增轴参数"
|
||||
Style="{StaticResource PidPrimaryButtonStyle}"
|
||||
Click="{mw:Action AddAxis}"/>
|
||||
<Button Content="删除轴参数"
|
||||
Style="{StaticResource PidDangerButtonStyle}"
|
||||
Click="{mw:Action DeleteAxis}"/>
|
||||
</WrapPanel>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="滤波参数">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="8"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Grid.Row="0"
|
||||
Margin="12,8,12,6"
|
||||
Text="每个行对应一个轴的滤波参数设置,请根据机械共振频率调整滤波参数。"
|
||||
Style="{StaticResource PidHintTextStyle}"
|
||||
Foreground="{StaticResource PidHeaderForegroundBrush}"/>
|
||||
|
||||
<Grid Grid.Row="1" Margin="12,0,12,0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Margin="0,0,0,6"
|
||||
Text="陷波参数"
|
||||
Style="{StaticResource PidSectionTitleStyle}"/>
|
||||
|
||||
<ScrollViewer Grid.Row="1"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto">
|
||||
<DataGrid ItemsSource="{Binding SelectedFilteringParameters}"
|
||||
SelectedItem="{Binding SelectedNotchFilteringParameter, Mode=TwoWay}"
|
||||
AutoGenerateColumns="False"
|
||||
CanUserAddRows="False"
|
||||
CanUserDeleteRows="False"
|
||||
MinHeight="200"
|
||||
MinWidth="900"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Disabled">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTemplateColumn Header="轴名称" Width="180">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding AxisDisplayName}" VerticalAlignment="Center"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
<DataGridTemplateColumn.CellEditingTemplate>
|
||||
<DataTemplate>
|
||||
<ComboBox ItemsSource="{Binding DataContext.AxisOptions, RelativeSource={RelativeSource AncestorType=UserControl}}"
|
||||
DisplayMemberPath="AxisName"
|
||||
SelectedValuePath="AxisIndex"
|
||||
SelectedValue="{Binding AxisIndex, UpdateSourceTrigger=PropertyChanged}"
|
||||
Style="{StaticResource PidAxisComboBoxStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellEditingTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridCheckBoxColumn Header="开启陷波" Width="90"
|
||||
Binding="{Binding IsUseNotch.Value, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<DataGridTemplateColumn Header="陷波频率 (Hz)" Width="120">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding NotchFrequency.Value}" Style="{StaticResource PidNumericDisplayTextStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
<DataGridTemplateColumn.CellEditingTemplate>
|
||||
<DataTemplate>
|
||||
<mw:NumberBox Value="{Binding NotchFrequency.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
Style="{StaticResource PidNumberBoxStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellEditingTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="陷波宽度" Width="110">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding NotchWidth.Value}" Style="{StaticResource PidNumericDisplayTextStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
<DataGridTemplateColumn.CellEditingTemplate>
|
||||
<DataTemplate>
|
||||
<mw:NumberBox Value="{Binding NotchWidth.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
Style="{StaticResource PidNumberBoxStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellEditingTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="衰减" Width="110">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding NotchFalloff.Value}" Style="{StaticResource PidNumericDisplayTextStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
<DataGridTemplateColumn.CellEditingTemplate>
|
||||
<DataTemplate>
|
||||
<mw:NumberBox Value="{Binding NotchFalloff.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
Style="{StaticResource PidNumberBoxStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellEditingTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="3" Margin="12,0,12,8">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Margin="0,0,0,6"
|
||||
Text="低通参数"
|
||||
Style="{StaticResource PidSectionTitleStyle}"/>
|
||||
|
||||
<ScrollViewer Grid.Row="1"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto">
|
||||
<DataGrid ItemsSource="{Binding SelectedFilteringParameters}"
|
||||
SelectedItem="{Binding SelectedLowPassFilteringParameter, Mode=TwoWay}"
|
||||
AutoGenerateColumns="False"
|
||||
CanUserAddRows="False"
|
||||
CanUserDeleteRows="False"
|
||||
MinHeight="200"
|
||||
MinWidth="760"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Disabled">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTemplateColumn Header="轴名称" Width="180">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding AxisDisplayName}" VerticalAlignment="Center"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
<DataGridTemplateColumn.CellEditingTemplate>
|
||||
<DataTemplate>
|
||||
<ComboBox ItemsSource="{Binding DataContext.AxisOptions, RelativeSource={RelativeSource AncestorType=UserControl}}"
|
||||
DisplayMemberPath="AxisName"
|
||||
SelectedValuePath="AxisIndex"
|
||||
SelectedValue="{Binding AxisIndex, UpdateSourceTrigger=PropertyChanged}"
|
||||
Style="{StaticResource PidAxisComboBoxStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellEditingTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridCheckBoxColumn Header="开启低通" Width="90"
|
||||
Binding="{Binding IsUseFiltering.Value, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<DataGridTemplateColumn Header="低通频率 (Hz)" Width="130">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding FilteringFrequency.Value}" Style="{StaticResource PidNumericDisplayTextStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
<DataGridTemplateColumn.CellEditingTemplate>
|
||||
<DataTemplate>
|
||||
<mw:NumberBox Value="{Binding FilteringFrequency.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
Style="{StaticResource PidNumberBoxStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellEditingTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="阻尼系数" Width="130">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding FilteringDamping.Value}" Style="{StaticResource PidNumericDisplayTextStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
<DataGridTemplateColumn.CellEditingTemplate>
|
||||
<DataTemplate>
|
||||
<mw:NumberBox Value="{Binding FilteringDamping.Value, UpdateSourceTrigger=PropertyChanged}"
|
||||
Style="{StaticResource PidNumberBoxStyle}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellEditingTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
|
||||
<WrapPanel Grid.Row="4" Margin="12,0,12,12">
|
||||
<Button Content="新增滤波参数"
|
||||
Style="{StaticResource PidPrimaryButtonStyle}"
|
||||
Click="{mw:Action AddFilteringParameter}"/>
|
||||
<Button Content="删除滤波参数"
|
||||
Style="{StaticResource PidDangerButtonStyle}"
|
||||
Click="{mw:Action DeleteFilteringParameter}"/>
|
||||
</WrapPanel>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="2"
|
||||
Margin="12,0,12,12"
|
||||
Padding="12,8"
|
||||
Background="White"
|
||||
BorderBrush="{StaticResource PidCardBorderBrush}"
|
||||
BorderThickness="1"
|
||||
CornerRadius="4">
|
||||
<TextBlock Text="说明:PID 配置组由程序初始化;每个配置组对应一组 PID 参数和滤波参数。"
|
||||
Style="{StaticResource PidHintTextStyle}"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,15 @@
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// PidRecipeEditorView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class PidRecipeEditorView : UserControl
|
||||
{
|
||||
public PidRecipeEditorView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,164 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.ProcessCompensationView"
|
||||
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/"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="500"
|
||||
d:DesignWidth="960">
|
||||
<Grid Background="#F4F7FB">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Margin="12,12,12,8"
|
||||
Padding="12,10"
|
||||
Background="White"
|
||||
BorderBrush="#D6E0EA"
|
||||
BorderThickness="1"
|
||||
CornerRadius="4">
|
||||
<StackPanel>
|
||||
<TextBlock Text="补偿参数"
|
||||
Foreground="#2E5FA7"
|
||||
FontSize="15"
|
||||
FontWeight="Bold"/>
|
||||
<TextBlock Margin="0,4,0,0"
|
||||
Text="当前工艺配方支持对 PHS-X1、PHS-Y1、WS-X、Stage-Y 四个轴分别设置补偿值。"
|
||||
Foreground="#6B7B8D"
|
||||
FontSize="12"
|
||||
TextWrapping="Wrap"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="1"
|
||||
Margin="12,0,12,12"
|
||||
Background="White"
|
||||
BorderBrush="#D6E0EA"
|
||||
BorderThickness="1"
|
||||
CornerRadius="4">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Padding="14,10"
|
||||
Background="#EEF3F8"
|
||||
BorderBrush="#D6E0EA"
|
||||
BorderThickness="0,0,0,1"
|
||||
CornerRadius="4,4,0,0">
|
||||
<TextBlock Text="轴补偿设置"
|
||||
Foreground="#2E5FA7"
|
||||
FontSize="15"
|
||||
FontWeight="Bold"/>
|
||||
</Border>
|
||||
|
||||
<Grid Grid.Row="1" Margin="16">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="180"/>
|
||||
<ColumnDefinition Width="180"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="#2E5FA7"
|
||||
FontSize="14"
|
||||
FontWeight="Bold"
|
||||
Text="PHS-X1"/>
|
||||
<mw:NumberBox Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource ProcessLargeNumberBoxStyle}"
|
||||
Value="{Binding PhsX1Compensation, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
DecimalPlaces="4"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"
|
||||
ShowUpDownButton="True"/>
|
||||
<TextBlock Grid.Row="0"
|
||||
Grid.Column="2"
|
||||
Margin="8,0,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="#6B7B8D"
|
||||
Text="mm"/>
|
||||
|
||||
<TextBlock Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Margin="0,12,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="#2E5FA7"
|
||||
FontSize="14"
|
||||
FontWeight="Bold"
|
||||
Text="PHS-Y1"/>
|
||||
<mw:NumberBox Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Margin="8,12,0,0"
|
||||
Style="{StaticResource ProcessLargeNumberBoxStyle}"
|
||||
Value="{Binding PhsY1Compensation, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
DecimalPlaces="4"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"
|
||||
ShowUpDownButton="True"/>
|
||||
<TextBlock Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Margin="8,12,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="#6B7B8D"
|
||||
Text="mm"/>
|
||||
|
||||
<TextBlock Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Margin="0,12,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="#2E5FA7"
|
||||
FontSize="14"
|
||||
FontWeight="Bold"
|
||||
Text="WS-X"/>
|
||||
<mw:NumberBox Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Margin="8,12,0,0"
|
||||
Style="{StaticResource ProcessLargeNumberBoxStyle}"
|
||||
Value="{Binding WsXCompensation, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
DecimalPlaces="4"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"
|
||||
ShowUpDownButton="True"/>
|
||||
<TextBlock Grid.Row="2"
|
||||
Grid.Column="2"
|
||||
Margin="8,12,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="#6B7B8D"
|
||||
Text="mm"/>
|
||||
|
||||
<TextBlock Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Margin="0,12,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="#2E5FA7"
|
||||
FontSize="14"
|
||||
FontWeight="Bold"
|
||||
Text="Stage-Y"/>
|
||||
<mw:NumberBox Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
Margin="8,12,0,0"
|
||||
Style="{StaticResource ProcessLargeNumberBoxStyle}"
|
||||
Value="{Binding StageYCompensation, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
DecimalPlaces="4"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"
|
||||
ShowUpDownButton="True"/>
|
||||
<TextBlock Grid.Row="3"
|
||||
Grid.Column="2"
|
||||
Margin="8,12,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="#6B7B8D"
|
||||
Text="mm"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,15 @@
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// ProcessCompensationView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class ProcessCompensationView : UserControl
|
||||
{
|
||||
public ProcessCompensationView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.ProcessRecipeView"
|
||||
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:local="clr-namespace:MainShell.Recipe.View"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="720" d:DesignWidth="1180">
|
||||
<UserControl.Resources>
|
||||
<SolidColorBrush x:Key="ProcessRecipePageBackgroundBrush" Color="#F4F7FB"/>
|
||||
<SolidColorBrush x:Key="ProcessRecipeTabBorderBrush" Color="#D6E0EA"/>
|
||||
<SolidColorBrush x:Key="ProcessRecipeTabHeaderBrush" Color="#425466"/>
|
||||
<SolidColorBrush x:Key="ProcessRecipeTabHoverBrush" Color="#F4F8FE"/>
|
||||
<SolidColorBrush x:Key="ProcessRecipeTabSelectedBrush" Color="#FFFFFF"/>
|
||||
<SolidColorBrush x:Key="ProcessRecipeTabAccentBrush" Color="#2E5FA7"/>
|
||||
|
||||
<Style x:Key="ProcessRecipeTabItemStyle" TargetType="TabItem">
|
||||
<Setter Property="Padding" Value="28,12"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource ProcessRecipeTabHeaderBrush}"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="TabItem">
|
||||
<Border x:Name="TabBorder"
|
||||
Background="#E9EEF4"
|
||||
BorderBrush="{StaticResource ProcessRecipeTabBorderBrush}"
|
||||
BorderThickness="1,1,1,0"
|
||||
Margin="0,0,6,0"
|
||||
Padding="{TemplateBinding Padding}">
|
||||
<ContentPresenter HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
ContentSource="Header"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter TargetName="TabBorder" Property="Background" Value="{StaticResource ProcessRecipeTabHoverBrush}"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter TargetName="TabBorder" Property="Background" Value="{StaticResource ProcessRecipeTabSelectedBrush}"/>
|
||||
<Setter TargetName="TabBorder" Property="BorderBrush" Value="{StaticResource ProcessRecipeTabAccentBrush}"/>
|
||||
<Setter Property="Foreground" Value="{StaticResource ProcessRecipeTabAccentBrush}"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</UserControl.Resources>
|
||||
<Grid Background="{StaticResource ProcessRecipePageBackgroundBrush}">
|
||||
<Border Margin="12"
|
||||
Background="White"
|
||||
BorderBrush="{StaticResource ProcessRecipeTabBorderBrush}"
|
||||
BorderThickness="1">
|
||||
<TabControl Background="Transparent"
|
||||
BorderThickness="0"
|
||||
ItemContainerStyle="{StaticResource ProcessRecipeTabItemStyle}">
|
||||
<TabItem Header="PID参数">
|
||||
<local:PidRecipeEditorView/>
|
||||
</TabItem>
|
||||
<TabItem Header="补偿参数">
|
||||
<local:ProcessCompensationView DataContext="{Binding ProcessCompensationViewModel}"/>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</Border>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// ProcessRecipeView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class ProcessRecipeView : UserControl
|
||||
{
|
||||
public ProcessRecipeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.RecipeButtonGroupView"
|
||||
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:local="clr-namespace:MainShell.Recipe.View"
|
||||
mc:Ignorable="d"
|
||||
>
|
||||
|
||||
<Border Background="#EBEEF3">
|
||||
<StackPanel>
|
||||
<UniformGrid Margin="2" Columns="2" Rows="4">
|
||||
<Button Command="{Binding RecipeButtonGroupViewModel.CreateNewCmd}" CommandParameter="{Binding}" ToolTip="{DynamicResource New}" Style="{StaticResource iconButton}">
|
||||
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
|
||||
<TextBlock Text="" Foreground="Blue" FontFamily="{StaticResource ttfFont}" VerticalAlignment="Center" />
|
||||
<TextBlock Margin="4,0" Text="{DynamicResource New}" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Button Command="{Binding RecipeButtonGroupViewModel.ApplyCmd}" CommandParameter="{Binding}" ToolTip="{DynamicResource Apply}" Style="{StaticResource iconButton}">
|
||||
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
|
||||
<TextBlock Text="" Foreground="Blue" FontFamily="{StaticResource ttfFont}" VerticalAlignment="Center" />
|
||||
<TextBlock Margin="4,0" Text="{DynamicResource Apply}" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Button Command="{Binding RecipeButtonGroupViewModel.ReNameCmd}" CommandParameter="{Binding }" ToolTip="{DynamicResource ReName}" Style="{StaticResource iconButton}">
|
||||
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
|
||||
<TextBlock Text="" Foreground="#7CEAB8" FontFamily="{StaticResource ttfFont}" VerticalAlignment="Center" />
|
||||
<TextBlock Margin="4,0" Text="{DynamicResource ReName}" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Button Command="{Binding RecipeButtonGroupViewModel.DeleteCmd}" CommandParameter="{Binding}" ToolTip="{DynamicResource Delete}" Style="{StaticResource iconButton}">
|
||||
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
|
||||
<TextBlock Text="" Foreground="Red" FontFamily="{StaticResource ttfFont}" VerticalAlignment="Center" />
|
||||
<TextBlock Margin="4,0" Text="{DynamicResource Delete}" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Button Command="{Binding RecipeButtonGroupViewModel.CopyCmd}" CommandParameter="{Binding }" ToolTip="{DynamicResource Copy}" Style="{StaticResource iconButton}" IsEnabled="{Binding CanCopyRecipe}">
|
||||
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
|
||||
<TextBlock Text="" Foreground="Blue" FontFamily="{StaticResource ttfFont}" VerticalAlignment="Center" />
|
||||
<TextBlock Margin="4,0" Text="{DynamicResource Copy}" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Button Command="{Binding RecipeButtonGroupViewModel.ClearCmd}" CommandParameter="{Binding }" ToolTip="{DynamicResource Clear}" Style="{StaticResource iconButton}">
|
||||
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
|
||||
<TextBlock Text="" Foreground="Red" FontFamily="{StaticResource ttfFont}" VerticalAlignment="Center" />
|
||||
<TextBlock Margin="4,0" Text="{DynamicResource Clear}" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Button Command="{Binding RecipeButtonGroupViewModel.ImportCmd}" CommandParameter="{Binding }" ToolTip="{DynamicResource Import}" Style="{StaticResource iconButton}" IsEnabled="{Binding CanImportRecipe}">
|
||||
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
|
||||
<TextBlock Text="" Foreground="#5462E6" FontFamily="{StaticResource ttfFont}" VerticalAlignment="Center" />
|
||||
<TextBlock Margin="4,0" Text="{DynamicResource Import}" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
<Button Command="{Binding RecipeButtonGroupViewModel.ExportCmd}" CommandParameter="{Binding }" ToolTip="{DynamicResource Export}" Style="{StaticResource iconButton}" IsEnabled="{Binding CanExportRecipe}">
|
||||
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
|
||||
<TextBlock Text="" Foreground="#5462E6" FontFamily="{StaticResource ttfFont}" VerticalAlignment="Center" />
|
||||
<TextBlock Margin="4,0" Text="{DynamicResource Export}" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
</UniformGrid>
|
||||
<Button Command="{Binding RecipeButtonGroupViewModel.SaveCmd}" CommandParameter="{Binding }" Width="140" ToolTip="{DynamicResource Save}" Style="{StaticResource iconButton}">
|
||||
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
|
||||
<TextBlock Text="" Foreground="#007BFF" FontSize="16" FontFamily="{StaticResource ttfFont}" VerticalAlignment="Center" />
|
||||
<TextBlock Margin="4,0" Text="{DynamicResource Save}" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
</UserControl>
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// RecipeButtonGroupView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class RecipeButtonGroupView : UserControl
|
||||
{
|
||||
public RecipeButtonGroupView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<Window x:Class="MainShell.Recipe.View.RecipeNameWindow"
|
||||
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:local="clr-namespace:MainShell.Recipe.View"
|
||||
xmlns:common="clr-namespace:MainShell.Common"
|
||||
mc:Ignorable="d"
|
||||
common:WindowService.DialogResult="{Binding DialogResult}"
|
||||
Title="RecipeNameWindow"
|
||||
ResizeMode="NoResize"
|
||||
AllowsTransparency="True"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
WindowStyle="None"
|
||||
Background="Transparent"
|
||||
Height="180" Width="380"
|
||||
Loaded="Window_Loaded">
|
||||
<Border
|
||||
Background="#F8F8F8"
|
||||
CornerRadius="10"
|
||||
BorderBrush="#E8E8E8"
|
||||
BorderThickness="1"
|
||||
MouseDown="Window_MouseDown">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock
|
||||
Style="{StaticResource LabelStyle}"
|
||||
Text="{DynamicResource CreateRecipe}"
|
||||
HorizontalAlignment="Center"
|
||||
FontSize="18"
|
||||
FontFamily="Segoe UI"
|
||||
FontWeight="Bold"
|
||||
Foreground="#424A4D"
|
||||
Margin="10,10,0,0"/>
|
||||
<StackPanel Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center">
|
||||
<TextBlock Text="请输入新配方的名称:" FontSize="14" VerticalAlignment="Center" Foreground="#555555" Margin="0,0,0,8"/>
|
||||
<TextBox x:Name="RecipeNameTextBox" Width="260" Height="34" Padding="10,0" FontSize="15"
|
||||
VerticalContentAlignment="Center" BorderThickness="1" BorderBrush="#CCCCCC"
|
||||
Background="White"
|
||||
Text="{Binding RecipeName, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<TextBlock
|
||||
Text="{Binding ValidationMessage}"
|
||||
Foreground="Red"
|
||||
Margin="4,2,0,0"
|
||||
FontSize="12"
|
||||
TextWrapping="Wrap">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="Visibility" Value="Visible" />
|
||||
<Style.Triggers>
|
||||
<!-- 当 Text 为空时折叠 -->
|
||||
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Self}}" Value="">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Self}}" Value="{x:Null}">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" Margin="20,0,20,20">
|
||||
|
||||
<Button Content="确认" IsDefault="True" Style="{StaticResource StartButtonStyle}"
|
||||
Command="{Binding OkCommand}"/>
|
||||
<Button Content="取消" IsCancel="True" Style="{StaticResource CloseButtonStyle}" Margin="0,0,10,0"
|
||||
Command="{Binding CancelCommand}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Window>
|
||||
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// RecipeNameWindow.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class RecipeNameWindow : Window
|
||||
{
|
||||
public RecipeNameWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
if (e.ChangedButton == MouseButton.Left)
|
||||
{
|
||||
this.DragMove();
|
||||
}
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// 使用 Dispatcher 确保控件已可交互,然后设置键盘焦点并全选文本
|
||||
Dispatcher.BeginInvoke(new Action(() =>
|
||||
{
|
||||
RecipeNameTextBox.Focus();
|
||||
Keyboard.Focus(RecipeNameTextBox);
|
||||
RecipeNameTextBox.SelectAll();
|
||||
}), DispatcherPriority.Input);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
<Window x:Class="MainShell.Recipe.View.RecipeReNameWindow"
|
||||
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:local="clr-namespace:MainShell.Recipe.View"
|
||||
xmlns:common="clr-namespace:MainShell.Common"
|
||||
mc:Ignorable="d"
|
||||
common:WindowService.DialogResult="{Binding DialogResult}"
|
||||
Title="RecipeNameWindow"
|
||||
ResizeMode="NoResize"
|
||||
AllowsTransparency="True"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
WindowStyle="None"
|
||||
Background="Transparent"
|
||||
Height="240" Width="380"
|
||||
Loaded="Window_Loaded"
|
||||
>
|
||||
<Border
|
||||
Background="#F8F8F8"
|
||||
CornerRadius="10"
|
||||
BorderBrush="#E8E8E8"
|
||||
BorderThickness="1"
|
||||
MouseDown="Window_MouseDown">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock
|
||||
Style="{StaticResource LabelStyle}"
|
||||
Text="{DynamicResource ReNameRecipe}"
|
||||
HorizontalAlignment="Center"
|
||||
FontSize="18"
|
||||
FontFamily="Segoe UI"
|
||||
FontWeight="Bold"
|
||||
Foreground="#424A4D"
|
||||
Margin="10,10,0,0"/>
|
||||
<StackPanel Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center">
|
||||
<TextBlock Text="配方旧名称:" FontSize="14" VerticalAlignment="Center" Foreground="#555555" Margin="0,0,0,8"/>
|
||||
<TextBox x:Name="OldRecipeNameTextBox" Width="260" Height="34" Padding="10,0" FontSize="15"
|
||||
VerticalContentAlignment="Center" BorderThickness="1" BorderBrush="#CCCCCC"
|
||||
Background="White"
|
||||
IsReadOnly="True"
|
||||
Text="{Binding OldRecipeName}"/>
|
||||
<TextBlock Text="请输入新名称:" FontSize="14" VerticalAlignment="Center" Foreground="#555555" Margin="0,0,0,8"/>
|
||||
<TextBox x:Name="RecipeNameTextBox" Width="260" Height="34" Padding="10,0" FontSize="15"
|
||||
VerticalContentAlignment="Center" BorderThickness="1" BorderBrush="#CCCCCC"
|
||||
Background="White"
|
||||
Text="{Binding RecipeName, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<TextBlock
|
||||
Text="{Binding ValidationMessage}"
|
||||
Foreground="Red"
|
||||
Margin="4,2,0,0"
|
||||
FontSize="12"
|
||||
TextWrapping="Wrap">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="Visibility" Value="Visible" />
|
||||
<Style.Triggers>
|
||||
<!-- 当 Text 为空时折叠 -->
|
||||
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Self}}" Value="">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Self}}" Value="{x:Null}">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" Margin="20,0,20,20">
|
||||
|
||||
<Button Content="确认" IsDefault="True" Style="{StaticResource StartButtonStyle}"
|
||||
Command="{Binding OkCommand}"/>
|
||||
<Button Content="取消" IsCancel="True" Style="{StaticResource CloseButtonStyle}" Margin="0,0,10,0"
|
||||
Command="{Binding CancelCommand}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Window>
|
||||
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// RecipeReNameWindow.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class RecipeReNameWindow : Window
|
||||
{
|
||||
public RecipeReNameWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
if (e.ChangedButton == MouseButton.Left)
|
||||
{
|
||||
this.DragMove();
|
||||
}
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// 使用 Dispatcher 确保控件已可交互,然后设置键盘焦点并全选文本
|
||||
Dispatcher.BeginInvoke(new Action(() =>
|
||||
{
|
||||
RecipeNameTextBox.Focus();
|
||||
Keyboard.Focus(RecipeNameTextBox);
|
||||
RecipeNameTextBox.SelectAll();
|
||||
}), DispatcherPriority.Input);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.RecipeView"
|
||||
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:local="clr-namespace:MainShell.Recipe.View"
|
||||
xmlns:mw="http://www.maxwell-gp.com/"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="800">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid Margin="-40,0,0,0" Grid.Column="0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<mw:SideMenu ItemsSource="{Binding MenuItemWraps}"
|
||||
SelectedItem="{Binding SelectedMenuItem, Mode=TwoWay}"
|
||||
PreviewMouseLeftButtonDown="SideMenu_PreviewMouseLeftButtonDown"
|
||||
Grid.Row ="0" Width="150"
|
||||
ExpandMode="Accordion"
|
||||
AutoSelect="True"
|
||||
>
|
||||
<mw:SideMenu.ItemContainerStyle>
|
||||
<Style TargetType="{x:Type mw:SideMenuItem}" BasedOn="{StaticResource SideMenuItemHeaderAccordionBaseStyle}">
|
||||
<Setter Property="Header" Value="{Binding Header}" />
|
||||
<Setter Property="Tag" Value="{Binding Tag}" />
|
||||
</Style>
|
||||
</mw:SideMenu.ItemContainerStyle>
|
||||
</mw:SideMenu>
|
||||
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Column="1">
|
||||
<GroupBox Width="200" x:Name="groupList" Header="{DynamicResource RecipeList}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<ListBox x:Name="recipeList" SelectedItem="{Binding CurrentScreen.SelectedRecipeWrap, Mode=TwoWay}" Style="{StaticResource recipeListBoxStyle}"
|
||||
PreviewMouseLeftButtonDown="RecipeList_PreviewMouseLeftButtonDown"
|
||||
ItemsSource="{Binding CurrentScreen.RecipeWraps}"
|
||||
d:ItemsSource="{d:SampleData ItemCount=5}"/>
|
||||
<Border DataContext="{Binding ElementName=recipeList, Path=SelectedItem}" BorderThickness="1" BorderBrush="AliceBlue" Grid.Row="1">
|
||||
<ScrollViewer>
|
||||
<StackPanel>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="创建时间:"/>
|
||||
<TextBlock TextWrapping="Wrap" Text="{Binding CreateTime, Converter={StaticResource DateTimeToStringConverter}}"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="修改时间:"/>
|
||||
<TextBlock TextWrapping="Wrap" Text="{Binding ModifiedTime, Converter={StaticResource DateTimeToStringConverter}}"/>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="描述:"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
<Border Grid.Row="2">
|
||||
<local:RecipeButtonGroupView DataContext="{Binding CurrentScreen}" />
|
||||
</Border>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<ToggleButton x:Name="toggleBtn" HorizontalAlignment="Right" Style="{StaticResource ToggleBtnSideBarStyle}"
|
||||
IsChecked="{Binding IsRecipePanelHidden, Mode=TwoWay}">
|
||||
|
||||
<ToggleButton.Triggers>
|
||||
<EventTrigger RoutedEvent="ToggleButton.Checked">
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation Storyboard.TargetName="groupList" Storyboard.TargetProperty="(FrameworkElement.Width)" To="0" Duration="0:0:0.2"/>
|
||||
<ThicknessAnimation Storyboard.TargetName="toggleBtn"
|
||||
Storyboard.TargetProperty="(FrameworkElement.Margin)"
|
||||
To="-30,0,0,0" Duration="0:0:0.2"/>
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger>
|
||||
<EventTrigger RoutedEvent="ToggleButton.Unchecked">
|
||||
<BeginStoryboard>
|
||||
<Storyboard>
|
||||
<DoubleAnimation Storyboard.TargetName="groupList" Storyboard.TargetProperty="(FrameworkElement.Width)" To="200" Duration="0:0:0.2"/>
|
||||
<ThicknessAnimation Storyboard.TargetName="toggleBtn"
|
||||
Storyboard.TargetProperty="(FrameworkElement.Margin)"
|
||||
To="0,0,0,0" Duration="0:0:0.2"/>
|
||||
</Storyboard>
|
||||
</BeginStoryboard>
|
||||
</EventTrigger>
|
||||
</ToggleButton.Triggers>
|
||||
</ToggleButton>
|
||||
</Grid>
|
||||
<ContentControl Margin="5,0" Grid.Column="2" mw:View.Model="{Binding CurrentScreen}"/>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,106 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using MainShell.Common;
|
||||
using MainShell.Models;
|
||||
using MainShell.Recipe.Models;
|
||||
using MainShell.Recipe.ViewModel;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// RecipeView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class RecipeView : UserControl
|
||||
{
|
||||
public RecipeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void SideMenu_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var viewModel = DataContext as RecipeViewModel;
|
||||
if (viewModel == null)
|
||||
return;
|
||||
|
||||
FocusedEditorCommitHelper.CommitFocusedEditorChanges();
|
||||
|
||||
var targetMenuItem = FindMenuItemWrap(e.OriginalSource as DependencyObject);
|
||||
if (targetMenuItem == null)
|
||||
return;
|
||||
|
||||
e.Handled = true;
|
||||
viewModel.TrySelectMenuItem(targetMenuItem);
|
||||
}
|
||||
|
||||
private void RecipeList_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
var viewModel = DataContext as RecipeViewModel;
|
||||
if (viewModel == null)
|
||||
return;
|
||||
|
||||
FocusedEditorCommitHelper.CommitFocusedEditorChanges();
|
||||
|
||||
var targetRecipeWrap = FindDataContext<RecipeWrap>(e.OriginalSource as DependencyObject);
|
||||
if (targetRecipeWrap == null)
|
||||
return;
|
||||
|
||||
e.Handled = true;
|
||||
viewModel.TrySelectRecipeWrap(targetRecipeWrap);
|
||||
}
|
||||
|
||||
private static MenuItemWrap FindMenuItemWrap(DependencyObject dependencyObject)
|
||||
{
|
||||
return FindDataContext<MenuItemWrap>(dependencyObject);
|
||||
}
|
||||
|
||||
private static T FindDataContext<T>(DependencyObject dependencyObject) where T : class
|
||||
{
|
||||
var current = dependencyObject;
|
||||
while (current != null)
|
||||
{
|
||||
if (current is FrameworkElement frameworkElement && frameworkElement.DataContext is T dataContext)
|
||||
{
|
||||
return dataContext;
|
||||
}
|
||||
|
||||
if (current is FrameworkContentElement frameworkContentElement && frameworkContentElement.DataContext is T contentDataContext)
|
||||
{
|
||||
return contentDataContext;
|
||||
}
|
||||
|
||||
current = GetParent(current);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static DependencyObject GetParent(DependencyObject dependencyObject)
|
||||
{
|
||||
if (dependencyObject is FrameworkElement frameworkElement)
|
||||
{
|
||||
return frameworkElement.Parent ?? VisualTreeHelper.GetParent(frameworkElement);
|
||||
}
|
||||
|
||||
if (dependencyObject is FrameworkContentElement frameworkContentElement)
|
||||
{
|
||||
return frameworkContentElement.Parent;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,192 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.SubstrateHeightMeasureView"
|
||||
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:behavior="clr-namespace:MainShell.Common.ControlAttribute"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="900">
|
||||
<UserControl.Resources>
|
||||
<Style x:Key="NumericOnlyEditingTextBoxStyle" TargetType="TextBox">
|
||||
<Setter Property="behavior:ControlBehavior.IsNumericOnly" Value="True"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
<Setter Property="Padding" Value="6,2"/>
|
||||
</Style>
|
||||
<Style x:Key="DataGridRowStyle" TargetType="DataGridRow">
|
||||
<Setter Property="Background" Value="White"/>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="AlternationIndex" Value="1">
|
||||
<Setter Property="Background" Value="#F7FBFF"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</UserControl.Resources>
|
||||
<Grid Margin="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<GroupBox Grid.Row="0"
|
||||
Margin="8,8,8,4"
|
||||
Header="测高模式"
|
||||
Style="{StaticResource GroupBoxSecondary}">
|
||||
<Border Margin="10"
|
||||
Padding="12"
|
||||
Background="#F7FBFF"
|
||||
BorderBrush="#D7E6F5"
|
||||
BorderThickness="1"
|
||||
CornerRadius="6">
|
||||
<StackPanel>
|
||||
<TextBlock Text="支持标准示教位置与行列偏移两种测高点配置方式"
|
||||
Foreground="#4A6178"
|
||||
Margin="0,0,0,12"/>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
|
||||
<RadioButton Content="标准示教位置"
|
||||
IsChecked="{Binding Mode, Mode=TwoWay, Converter={StaticResource SubstrateHeightMeasureModeToBoolConverter}, ConverterParameter=0}"
|
||||
VerticalAlignment="Center"
|
||||
FontWeight="SemiBold"
|
||||
Margin="0,0,24,0"/>
|
||||
<RadioButton Content="行列坐标 + 偏移补偿"
|
||||
IsChecked="{Binding Mode, Mode=TwoWay, Converter={StaticResource SubstrateHeightMeasureModeToBoolConverter}, ConverterParameter=1}"
|
||||
VerticalAlignment="Center"
|
||||
FontWeight="SemiBold"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Grid.Row="1"
|
||||
Margin="8,4,8,8"
|
||||
Header="测高点设置"
|
||||
Style="{StaticResource GroupBoxSecondary}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<DockPanel Grid.Row="0" Margin="8,8,8,4" LastChildFill="False">
|
||||
<StackPanel DockPanel.Dock="Left">
|
||||
<TextBlock Text="测高点列表"
|
||||
FontSize="16"
|
||||
FontWeight="Bold"
|
||||
Foreground="#24415C"/>
|
||||
<TextBlock Text="当前模式下可维护测高点并编辑对应参数"
|
||||
Margin="0,4,0,0"
|
||||
Foreground="#6B7F92"/>
|
||||
</StackPanel>
|
||||
<WrapPanel DockPanel.Dock="Right" Orientation="Horizontal" Margin="12,0,0,0">
|
||||
<Button Content="添加测高点"
|
||||
Style="{StaticResource StartButtonStyle}"
|
||||
Command="{Binding AddPointCmd}"
|
||||
Margin="4"/>
|
||||
<Button Content="删除测高点"
|
||||
Style="{StaticResource CloseButtonStyle}"
|
||||
Command="{Binding DeletePointCmd}"
|
||||
Margin="4"/>
|
||||
<Button Content="示教当前位置"
|
||||
Style="{StaticResource TeachButtonStyle}"
|
||||
Command="{Binding TeachPointCmd}"
|
||||
IsEnabled="{Binding IsTeachMode}"
|
||||
Margin="4"/>
|
||||
</WrapPanel>
|
||||
</DockPanel>
|
||||
|
||||
<Border Grid.Row="1"
|
||||
Margin="8,4,8,4"
|
||||
Padding="10,8"
|
||||
Background="#F7FBFF"
|
||||
BorderBrush="#D7E6F5"
|
||||
BorderThickness="1"
|
||||
CornerRadius="6"
|
||||
Visibility="{Binding IsRowColumnMode, Converter={StaticResource BoolToVisibleConverter}}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0"
|
||||
Text="统一偏移补偿:"
|
||||
VerticalAlignment="Center"
|
||||
Margin="0,0,8,0"
|
||||
Foreground="#4A6178"/>
|
||||
<TextBlock Grid.Column="1"
|
||||
Text="X"
|
||||
VerticalAlignment="Center"
|
||||
Margin="0,0,4,0"/>
|
||||
<mw:NumberBox Grid.Column="2"
|
||||
Width="100"
|
||||
Margin="0,0,10,0"
|
||||
VerticalContentAlignment="Center"
|
||||
Value="{Binding CommonOffsetCompensation.X, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<TextBlock Grid.Column="3"
|
||||
Text="Y"
|
||||
VerticalAlignment="Center"
|
||||
Margin="0,0,4,0"/>
|
||||
<mw:NumberBox Grid.Column="4"
|
||||
Width="100"
|
||||
Margin="0,0,10,0"
|
||||
VerticalContentAlignment="Center"
|
||||
Value="{Binding CommonOffsetCompensation.Y, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<TextBlock Grid.Column="5"
|
||||
Text="可先统一写入,再对个别点单独修正"
|
||||
VerticalAlignment="Center"
|
||||
Margin="0,0,12,0"
|
||||
TextWrapping="Wrap"
|
||||
Foreground="#6B7F92"/>
|
||||
<Button Grid.Column="6"
|
||||
Content="一键写入全部点位"
|
||||
Width="120"
|
||||
Style="{StaticResource VisionButtonStyle}"
|
||||
Command="{Binding ApplyOffsetToAllCmd}"
|
||||
Margin="12,0,0,0"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Grid Grid.Row="2" Margin="8,4,8,8">
|
||||
<Grid Visibility="{Binding IsTeachMode, Converter={StaticResource BoolToVisibleConverter}}">
|
||||
<DataGrid ItemsSource="{Binding Points}"
|
||||
SelectedItem="{Binding SelectedPoint}"
|
||||
AutoGenerateColumns="False"
|
||||
CanUserAddRows="False"
|
||||
MinHeight="140"
|
||||
AlternationCount="2"
|
||||
RowStyle="{StaticResource DataGridRowStyle}">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="点位名称" Width="1.4*" Binding="{Binding PointName, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<DataGridTextColumn Header="标准位置 X" Width="*" Binding="{Binding TeachPosition.X, UpdateSourceTrigger=PropertyChanged, StringFormat=F4}" EditingElementStyle="{StaticResource NumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="标准位置 Y" Width="*" Binding="{Binding TeachPosition.Y, UpdateSourceTrigger=PropertyChanged, StringFormat=F4}" EditingElementStyle="{StaticResource NumericOnlyEditingTextBoxStyle}"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
|
||||
<Grid Visibility="{Binding IsRowColumnMode, Converter={StaticResource BoolToVisibleConverter}}">
|
||||
<DataGrid ItemsSource="{Binding Points}"
|
||||
SelectedItem="{Binding SelectedPoint}"
|
||||
AutoGenerateColumns="False"
|
||||
CanUserAddRows="False"
|
||||
MinHeight="140"
|
||||
AlternationCount="2"
|
||||
RowStyle="{StaticResource DataGridRowStyle}">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="点位名称" Width="1.4*" Binding="{Binding PointName, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<DataGridTextColumn Header="行坐标" Width="*" Binding="{Binding RowIndex, UpdateSourceTrigger=PropertyChanged}" EditingElementStyle="{StaticResource NumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="列坐标" Width="*" Binding="{Binding ColumnIndex, UpdateSourceTrigger=PropertyChanged}" EditingElementStyle="{StaticResource NumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="偏移补偿 X" Width="*" Binding="{Binding OffsetCompensation.X, UpdateSourceTrigger=PropertyChanged, StringFormat=F4}" EditingElementStyle="{StaticResource NumericOnlyEditingTextBoxStyle}"/>
|
||||
<DataGridTextColumn Header="偏移补偿 Y" Width="*" Binding="{Binding OffsetCompensation.Y, UpdateSourceTrigger=PropertyChanged, StringFormat=F4}" EditingElementStyle="{StaticResource NumericOnlyEditingTextBoxStyle}"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,12 @@
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
public partial class SubstrateHeightMeasureView : UserControl
|
||||
{
|
||||
public SubstrateHeightMeasureView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,136 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.SubstrateRecipeView"
|
||||
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:local="clr-namespace:MainShell.Recipe.View"
|
||||
xmlns:mw="http://www.maxwell-gp.com/"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="700" d:DesignWidth="800">
|
||||
<TabControl mw:TabControlAttach.HeaderWidth="Auto"
|
||||
SelectedIndex="{Binding SelectedTabIndex, Mode=TwoWay}">
|
||||
<TabItem Header="{DynamicResource BaseSetting}" Style="{StaticResource TabItemHorizontalStyle}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="240"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<GroupBox Header="{DynamicResource SubstrateInfo}" Style="{StaticResource GroupBoxSecondary}">
|
||||
<GroupBox.Resources>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource TextBlockStyle}"></Style>
|
||||
</GroupBox.Resources>
|
||||
<UniformGrid DataContext="{Binding SubstrateRecipe.SubstrateInfo}" Columns="2" Rows="14">
|
||||
<TextBlock Text="{DynamicResource SubstrateWidth}"/>
|
||||
<mw:NumberBox Value="{Binding SubstrateSize.Width,UpdateSourceTrigger=PropertyChanged}" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource SubstrateHeight}"/>
|
||||
<mw:NumberBox Value="{Binding SubstrateSize.Height,UpdateSourceTrigger=PropertyChanged}" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource SubstrateThickness}"/>
|
||||
<mw:NumberBox Value="{Binding ThickNess,UpdateSourceTrigger=PropertyChanged}" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource SubstratePiexlWidth}"/>
|
||||
<mw:NumberBox Value="{Binding PadSize.Width,UpdateSourceTrigger=PropertyChanged}" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource SubstratePiexlHeight}"/>
|
||||
<mw:NumberBox Value="{Binding PadSize.Height,UpdateSourceTrigger=PropertyChanged}" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource SubstratePitchX}"/>
|
||||
<mw:NumberBox Value="{Binding PitchX,UpdateSourceTrigger=PropertyChanged}" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource SubstratePitchY}"/>
|
||||
<mw:NumberBox Value="{Binding PitchY,UpdateSourceTrigger=PropertyChanged}" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource SubstrateRowNum}"/>
|
||||
<mw:NumberBox Value="{Binding RowNumber,UpdateSourceTrigger=PropertyChanged}" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource SubstrateColNum}"/>
|
||||
<mw:NumberBox Value="{Binding ColNumber,UpdateSourceTrigger=PropertyChanged}" mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
</UniformGrid>
|
||||
</GroupBox>
|
||||
<Grid Grid.Column="1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<GroupBox BorderThickness="0,1,0,1"
|
||||
Style="{StaticResource GroupBoxSecondary}"
|
||||
Header="{DynamicResource WaferRecipesSelect}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<DataGrid x:Name="waferInfo"
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
ItemsSource="{Binding SubstrateRecipe.WaferSelectInfos}"
|
||||
mw:DataGridAttach.ShowRowNumber="True">
|
||||
<DataGrid.Columns>
|
||||
<DataGridComboBoxColumn Width="*" TextBinding="{Binding WaferRecipeName}" Header="{DynamicResource WaferRecipe}">
|
||||
<DataGridComboBoxColumn.EditingElementStyle>
|
||||
<Style TargetType="ComboBox">
|
||||
<Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=GroupBox}, Path=DataContext.WaferRecipes}" />
|
||||
<Setter Property="DisplayMemberPath" Value="RecipeName"/>
|
||||
<Setter Property="SelectedIndex" Value="0"/>
|
||||
</Style>
|
||||
</DataGridComboBoxColumn.EditingElementStyle>
|
||||
</DataGridComboBoxColumn>
|
||||
<DataGridTemplateColumn Width="100" Header="{DynamicResource SubstrateOffsetX}">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
<mw:NumberBox BorderBrush="Transparent"
|
||||
Background="Transparent"
|
||||
HorizontalAlignment="Center"
|
||||
HorizontalContentAlignment="Center"
|
||||
Value="{Binding OffsetX}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Width="100" Header="{DynamicResource SubstrateOffsetY}">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
<mw:NumberBox BorderBrush="Transparent"
|
||||
Background="Transparent"
|
||||
HorizontalAlignment="Center"
|
||||
HorizontalContentAlignment="Center"
|
||||
Value="{Binding OffsetY}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Width="100"
|
||||
Header="{DynamicResource InUse}">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<CheckBox Style="{StaticResource ModernCheckBoxStyle}" IsChecked="{Binding IsUse, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<Border Grid.Row="1" Background="#F0F6F7">
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
|
||||
<Button Style="{StaticResource StartButtonStyle}" Click="{mw:Action AddWaferSelectInfo}" Content="{DynamicResource Add}" Margin="4,2"/>
|
||||
<Button Style="{StaticResource CloseButtonStyle}"
|
||||
Command="{Binding DeleteSelectWaferInfoCmd}"
|
||||
CommandParameter="{Binding ElementName=waferInfo, Path=SelectedItem}"
|
||||
Content="{DynamicResource Delete}" Margin="4,2"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
</GroupBox>
|
||||
<GroupBox Grid.Row="1" Header="{DynamicResource LogisticsInfo}">
|
||||
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="参数示教">
|
||||
<ContentControl mw:View.Model="{Binding SubstrateTeachViewModel}"/>
|
||||
</TabItem>
|
||||
<TabItem Header="测高设置">
|
||||
<local:SubstrateHeightMeasureView DataContext="{Binding SubstrateHeightMeasureViewModel}"/>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// SubstrateRecipeView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class SubstrateRecipeView : UserControl
|
||||
{
|
||||
public SubstrateRecipeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.SubstrateTeachView"
|
||||
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:local="clr-namespace:MainShell.Recipe.View"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="900">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ContentControl Content="{Binding CameraAxisViewModel}" />
|
||||
|
||||
<local:MarkTeachView Grid.Column="1" DataContext="{Binding MarkTeachViewModel}"/>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// SubstrateTeachView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class SubstrateTeachView : UserControl
|
||||
{
|
||||
public SubstrateTeachView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.WaferRecipeView"
|
||||
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:local="clr-namespace:MainShell.Recipe.View" xmlns:mw="http://www.maxwell-gp.com/"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="750" d:DesignWidth="800">
|
||||
<Grid>
|
||||
<TabControl mw:TabControlAttach.HeaderWidth="Auto"
|
||||
SelectedIndex="{Binding SelectedTabIndex, Mode=TwoWay}">
|
||||
<TabItem Header="{DynamicResource BaseSetting}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="240"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<GroupBox Header="{DynamicResource WaferInfo}" Style="{StaticResource GroupBoxSecondary}">
|
||||
<GroupBox.Resources>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource TextBlockStyle}">
|
||||
<Setter Property="HorizontalAlignment" Value="Right"/>
|
||||
</Style>
|
||||
</GroupBox.Resources>
|
||||
<UniformGrid Rows="14" Columns="2">
|
||||
<TextBlock Text="{DynamicResource DieColor}"/>
|
||||
<ComboBox IsEditable="True"
|
||||
Text="{Binding WaferRecipe.WaferInfo.DieColor, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
<TextBlock Text="{DynamicResource DieSizeX}"/>
|
||||
<mw:NumberBox Value="{Binding WaferRecipe.WaferInfo.DieSizeX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource DieSizeY}"/>
|
||||
<mw:NumberBox Value="{Binding WaferRecipe.WaferInfo.DieSizeY, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource DiePitchX}"/>
|
||||
<mw:NumberBox Value="{Binding WaferRecipe.WaferInfo.DiePitchX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource DiePitchY}"/>
|
||||
<mw:NumberBox Value="{Binding WaferRecipe.WaferInfo.DiePitchY, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource WaferWidth}"/>
|
||||
<mw:NumberBox Value="{Binding WaferRecipe.WaferInfo.WaferWidth, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource WaferHeight}"/>
|
||||
<mw:NumberBox Value="{Binding WaferRecipe.WaferInfo.WaferHeight, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource WaferRowNum}"/>
|
||||
<mw:NumberBox Value="{Binding WaferRecipe.WaferInfo.WaferRowNum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
<TextBlock Text="{DynamicResource WaferColNum}"/>
|
||||
<mw:NumberBox Value="{Binding WaferRecipe.WaferInfo.WaferColNum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
</UniformGrid>
|
||||
</GroupBox>
|
||||
<Grid Grid.Column="1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<GroupBox Grid.Row="0" Header="工艺参数选择" Style="{StaticResource GroupBoxSecondary}">
|
||||
<StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
|
||||
<TextBlock Text="工艺参数配方: " Style="{StaticResource TextBlockStyle}" VerticalAlignment="Center"/>
|
||||
<ComboBox MinWidth="160"
|
||||
ItemsSource="{Binding ProcessRecipes}"
|
||||
DisplayMemberPath="RecipeName"
|
||||
SelectedItem="{Binding SelectedProcessRecipeWrap, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="参数示教">
|
||||
<local:WaferTeachView DataContext="{Binding WaferTeachViewModel}"/>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
/// <summary>
|
||||
/// WaferRecipeView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class WaferRecipeView : UserControl
|
||||
{
|
||||
public WaferRecipeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,188 @@
|
||||
<UserControl x:Class="MainShell.Recipe.View.WaferTeachView"
|
||||
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:conv="clr-namespace:MainShell.Converter"
|
||||
xmlns:common="clr-namespace:MainShell.Common"
|
||||
mc:Ignorable="d"
|
||||
>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Border Margin="0,0,8,0">
|
||||
<ContentControl Content="{Binding CameraAxisViewModel}" />
|
||||
</Border>
|
||||
|
||||
<ScrollViewer Grid.Column="1"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Disabled">
|
||||
<Grid Margin="4">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<GroupBox Header="模版制作"
|
||||
Style="{StaticResource ProcessWideCardGroupBoxStyle}">
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Margin="0,4,0,0">
|
||||
<Button Content="视觉参数设置"
|
||||
Click="{mw:Action OpenVisionParameterSetting}"
|
||||
Style="{StaticResource VisionButtonStyle}"
|
||||
mw:View.ActionTarget="{Binding }"
|
||||
Width="105"
|
||||
Height="40"
|
||||
Margin="0,0,10,0"/>
|
||||
<Button Content="Mark模版"
|
||||
Click="{mw:Action MakeTemplate}"
|
||||
mw:View.ActionTarget="{Binding }"
|
||||
Style="{StaticResource TemplateButtonStyle}"
|
||||
Width="105"
|
||||
Height="40"/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
<Grid Grid.Row="1" DataContext="{Binding WaferRecipe.ScanSettings}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<GroupBox Grid.Row="0"
|
||||
Header="参数示教"
|
||||
Style="{StaticResource ProcessWideCardGroupBoxStyle}"
|
||||
Margin="0,0,0,10">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="起始X" Style="{StaticResource ProcessLabelStyle}"/>
|
||||
<mw:NumberBox Grid.Row="0" Grid.Column="1"
|
||||
Width="Auto"
|
||||
MinWidth="120"
|
||||
Style="{StaticResource ProcessLargeNumberBoxStyle}"
|
||||
Value="{Binding StartPointX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
|
||||
<Label Grid.Row="0" Grid.Column="2" Content="起始Y" Style="{StaticResource ProcessLabelStyle}"/>
|
||||
<mw:NumberBox Grid.Row="0" Grid.Column="3"
|
||||
Width="Auto"
|
||||
MinWidth="120"
|
||||
Style="{StaticResource ProcessLargeNumberBoxStyle}"
|
||||
Value="{Binding StartPointY, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
|
||||
<StackPanel Grid.Row="1"
|
||||
Grid.ColumnSpan="4"
|
||||
Margin="0,12,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
Orientation="Horizontal">
|
||||
<Button Content="示教"
|
||||
Click="{mw:Action TeachStartPoint}"
|
||||
mw:View.ActionTarget="{Binding DataContext, RelativeSource={RelativeSource AncestorType=UserControl}}"
|
||||
Style="{StaticResource TeachButtonStyle}"
|
||||
Margin="0,0,10,0"/>
|
||||
<Button Content="移动到"
|
||||
Click="{mw:Action MoveToStartPoint}"
|
||||
mw:View.ActionTarget="{Binding DataContext, RelativeSource={RelativeSource AncestorType=UserControl}}"
|
||||
Style="{StaticResource AxisMoveButtonStyle}"
|
||||
/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Grid.Row="1"
|
||||
Header="扫描参数"
|
||||
Style="{StaticResource ProcessWideCardGroupBoxStyle}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="X扫描方向" Style="{StaticResource ProcessLabelStyle}"/>
|
||||
<ComboBox Grid.Row="0" Grid.Column="1"
|
||||
Width="Auto"
|
||||
MinWidth="100"
|
||||
Style="{StaticResource ProcessLargeComboBoxStyle}"
|
||||
SelectedValue="{Binding ScanDirectionX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
SelectedValuePath="Value"
|
||||
DisplayMemberPath="Description"
|
||||
ItemsSource="{conv:EnumBindingSourceExtension UseDescription=True, EnumType={x:Type common:TransPathDirection}}"/>
|
||||
|
||||
<Label Grid.Row="0" Grid.Column="2" Content="Y扫描方向" Style="{StaticResource ProcessLabelStyle}"/>
|
||||
<ComboBox Grid.Row="0" Grid.Column="3"
|
||||
Width="Auto"
|
||||
MinWidth="100"
|
||||
Style="{StaticResource ProcessLargeComboBoxStyle}"
|
||||
SelectedValue="{Binding ScanDirectionY, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
SelectedValuePath="Value"
|
||||
DisplayMemberPath="Description"
|
||||
ItemsSource="{conv:EnumBindingSourceExtension UseDescription=True, EnumType={x:Type common:TransPathDirection}}"/>
|
||||
|
||||
<Label Grid.Row="1" Grid.Column="0" Content="X重叠率" Style="{StaticResource ProcessLabelStyle}"/>
|
||||
<mw:NumberBox Grid.Row="1" Grid.Column="1"
|
||||
Width="Auto"
|
||||
MinWidth="100"
|
||||
Style="{StaticResource ProcessLargeNumberBoxStyle}"
|
||||
Value="{Binding OverlapRateX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
|
||||
<Label Grid.Row="1" Grid.Column="2" Content="Y重叠率" Style="{StaticResource ProcessLabelStyle}"/>
|
||||
<mw:NumberBox Grid.Row="1" Grid.Column="3"
|
||||
Width="Auto"
|
||||
MinWidth="100"
|
||||
Style="{StaticResource ProcessLargeNumberBoxStyle}"
|
||||
Value="{Binding OverlapRateY, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
|
||||
<Label Grid.Row="2" Grid.Column="0" Content="偏移(mm)" Style="{StaticResource ProcessLabelStyle}"/>
|
||||
<mw:NumberBox Grid.Row="2" Grid.Column="1"
|
||||
Width="Auto"
|
||||
MinWidth="100"
|
||||
Style="{StaticResource ProcessLargeNumberBoxStyle}"
|
||||
Value="{Binding SoftLimitOffsetMm, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
|
||||
<Label Grid.Row="2" Grid.Column="2" Content="处理数量" Style="{StaticResource ProcessLabelStyle}"/>
|
||||
<mw:IntNumberBox Grid.Row="2" Grid.Column="3"
|
||||
Width="Auto"
|
||||
MinWidth="100"
|
||||
Style="{StaticResource ProcessLargeIntNumberBoxStyle}"
|
||||
Value="{Binding ConsumerCount, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
|
||||
<Label Grid.Row="3" Grid.Column="0" Content="处理线程数" Style="{StaticResource ProcessLabelStyle}"/>
|
||||
<mw:IntNumberBox Grid.Row="3" Grid.Column="1"
|
||||
Width="Auto"
|
||||
MinWidth="100"
|
||||
Style="{StaticResource ProcessLargeIntNumberBoxStyle}"
|
||||
Value="{Binding FrameChannelCapacity, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
mw:NumericKeypadAttach.IsEnabled="True"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,12 @@
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace MainShell.Recipe.View
|
||||
{
|
||||
public partial class WaferTeachView : UserControl
|
||||
{
|
||||
public WaferTeachView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user