| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457 | <UserControl x:Class="PunkHPX8_MainPages.Views.VpwRecipeView"             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:PunkHPX8_MainPages.Views"             xmlns:prism="http://prismlibrary.com/"              xmlns:Control="clr-namespace:MECF.Framework.UI.Core.Control;assembly=MECF.Framework.UI.Core"               xmlns:converters="clr-namespace:PunkHPX8_MainPages.Converters"             xmlns:UserControls="clr-namespace:PunkHPX8_Themes.UserControls;assembly=PunkHPX8_Themes"               xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"              xmlns:extendedControls="clr-namespace:MECF.Framework.UI.Core.ExtendedControls;assembly=MECF.Framework.UI.Core"             xmlns:wf ="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"             prism:ViewModelLocator.AutoWireViewModel="True"             mc:Ignorable="d"              d:DesignHeight="800" d:DesignWidth="1800" Loaded="UserControl_Loaded">    <UserControl.Resources>        <converters:BoolReverseConverter x:Key="boolReverseConverter"/>        <converters:BoolVisibilityConverter x:Key="boolVisibilityConverter"/>    </UserControl.Resources>    <Grid>        <Grid.RowDefinitions>            <RowDefinition Height="210"></RowDefinition>            <RowDefinition Height="*"/>        </Grid.RowDefinitions>        <Grid.ColumnDefinitions>            <ColumnDefinition Width="50"></ColumnDefinition>            <ColumnDefinition Width="400"></ColumnDefinition>            <ColumnDefinition></ColumnDefinition>        </Grid.ColumnDefinitions>        <UserControls:RecipeFileLoadControl Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" Title="VPW Recipe" RecipeNodes="{Binding RecipeNodes}" OperationCommand="{Binding OperationCommand}"                                     RecipeLocation="{Binding CurrentNode.RecipeLocation}" EditEnable="{Binding EditEnable}" CreateEnable="{Binding CreateEnable}" RecipeFileName="{Binding CurrentNode.FileName}"                                     CreateCommand="{Binding CreateCommand}" EditCommand="{Binding EditCommand}"/>        <Grid Grid.Row="0" Grid.Column="2" Margin="10 0 0 0">            <Grid.RowDefinitions>                <RowDefinition Height="70"></RowDefinition>                <RowDefinition Height="70"></RowDefinition>                <RowDefinition Height="70"></RowDefinition>                <RowDefinition/>            </Grid.RowDefinitions>            <Grid.ColumnDefinitions>                <ColumnDefinition Width="220"></ColumnDefinition>                <ColumnDefinition Width="220"></ColumnDefinition>                <ColumnDefinition Width="220"></ColumnDefinition>                <ColumnDefinition Width="220"></ColumnDefinition>                <ColumnDefinition Width="220"></ColumnDefinition>            </Grid.ColumnDefinitions>            <GroupBox Header="PPID" Grid.Row="0" Grid.ColumnSpan="3">                <TextBlock Text="{Binding Recipe.Ppid}" FontSize="20" VerticalAlignment="Center" TextAlignment="Center">                </TextBlock>            </GroupBox>            <Grid Grid.Row="0" Grid.Column="3" Grid.ColumnSpan="2" Margin="10 0 0 0 ">                <Grid.RowDefinitions>                    <RowDefinition Height="70"></RowDefinition>                </Grid.RowDefinitions>                <Grid Grid.Row="0" >                    <Grid.ColumnDefinitions>                        <ColumnDefinition/>                        <ColumnDefinition/>                        <ColumnDefinition/>                    </Grid.ColumnDefinitions>                    <Button Grid.Column="0" IsEnabled="{Binding Enable}" Style="{StaticResource SysBtnStyle}"  Content="Save" Height="35" Width="100" Command="{Binding SaveRecipeCommand}"></Button>                    <Button Grid.Column="1" Style="{StaticResource SysBtnStyle}"  Content="SaveAs" Height="35" Width="100" Command="{Binding SaveAsRecipeCommand}"></Button>                </Grid>            </Grid>            <GroupBox Header="Description" Grid.Row="1" Grid.ColumnSpan="3">                <TextBlock Text="{Binding Recipe.Description}" FontSize="18" VerticalAlignment="Center" TextAlignment="Center">                </TextBlock>            </GroupBox>            <GroupBox Header="Author" Grid.Row="2" Grid.Column="0">                <Label Content="{Binding Recipe.Author}" Height="30" Width="195" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray"                                             HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>            </GroupBox>            <GroupBox Header="CreateDate" Grid.Row="2" Grid.Column="1">                <Label Content="{Binding Recipe.CreateDate}" Height="30" Width="195" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray"                                             HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>            </GroupBox>            <GroupBox Header="SaveDate" Grid.Row="2" Grid.Column="2">                <Label Content="{Binding Recipe.SaveDate}" Height="30" Width="195" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray"                                             HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>            </GroupBox>            <GroupBox Header="Total TIme" IsEnabled="{Binding Enable}"  Grid.Row="2" Grid.Column="3">                <Label Content="{Binding Recipe.TotalTime}" Height="30" Width="195" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="White" Background="Gray"                              HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Grid.Column="1" Margin="6,0,0,0"></Label>            </GroupBox>            <GroupBox Header="Wafer Size" IsEnabled="{Binding Enable}"  Grid.Row="2" Grid.Column="4">                <ComboBox Height="30" Margin="0,0,20,0" ItemsSource="{Binding WaferSizeLst}" SelectedItem="{Binding Recipe.WaferSize, Mode=TwoWay}">                </ComboBox>            </GroupBox>        </Grid>        <Grid Grid.Row="2" Grid.Column="2">            <Grid.RowDefinitions>                <RowDefinition Height="200"></RowDefinition>                <RowDefinition Height="*"></RowDefinition>            </Grid.RowDefinitions>            <Grid.ColumnDefinitions>                <ColumnDefinition Width="350"></ColumnDefinition>                <ColumnDefinition Width="350"></ColumnDefinition>                <ColumnDefinition Width="350"></ColumnDefinition>                <ColumnDefinition Width="350"></ColumnDefinition>            </Grid.ColumnDefinitions>            <GroupBox  Header="1.Vacuum Prewet" Grid.Column="3"  Padding="10" Grid.Row="0" Grid.RowSpan="2">                <Grid>                    <Grid.RowDefinitions>                        <RowDefinition Height="75"></RowDefinition>                        <RowDefinition Height="75"></RowDefinition>                        <RowDefinition Height="45"></RowDefinition>                        <RowDefinition Height="45"></RowDefinition>                        <RowDefinition Height="45"></RowDefinition>                        <RowDefinition Height="45"></RowDefinition>                        <RowDefinition Height="200"></RowDefinition>                    </Grid.RowDefinitions>                    <Grid.ColumnDefinitions>                        <ColumnDefinition Width="300"></ColumnDefinition>                    </Grid.ColumnDefinitions>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Add Below" Height="25" Width="80" FontSize="10" Command="{Binding AddBelowCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,-20,0"></Button>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Add Above" Height="25" Width="80" FontSize="10" Command="{Binding AddAboveCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,70,-20,0"></Button>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Move Up" Height="25" Width="80" FontSize="10" Command="{Binding MoveUpCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,140,-20,0"></Button>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Move Down" Height="26" Width="80" FontSize="10" Command="{Binding MoveDownCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,165,-20,-50" ></Button>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Delete" Height="26" Width="80" FontSize="10" Command="{Binding DeleteCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,210,-20,-80"/>                    <UserControls:GroupTextBoxControl Grid.Row="6" Title="Flow Set Ponit" Unit="L/min" MinValue="0" MaxValue="10" Width="120" Margin="0,0,200,119"                                       IntValue="{Binding Recipe.VacuumPrewetFlowSetPoint,Mode=TwoWay}"                                        ValidResult="{Binding PropertyValidResultDic[VacuumPrewetFlowSetPoint],Mode=TwoWay}"  />                    <UserControls:GroupTextBoxControl Grid.Row="6" Title="Flow Warning" Unit="%" MinValue="0" MaxValue="100" Margin="97,0,105,118" Width="120"                        IntValue="{Binding Recipe.VacuumPrewetFlowWarningPercent,Mode=TwoWay}"                         ValidResult="{Binding PropertyValidResultDic[VacuumPrewetFlowWarningPercent],Mode=TwoWay}"  />                    <UserControls:GroupTextBoxControl Grid.Row="6" Title="Flow Fault" Unit="%" MinValue="0" MaxValue="100" Margin="194,0,-14,118" Width="120"                        IntValue="{Binding Recipe.VacuumPrewetFlowErrorPercent,Mode=TwoWay}"                         ValidResult="{Binding PropertyValidResultDic[VacuumPrewetFlowErrorPercent],Mode=TwoWay}"  />                    <UserControls:GroupTextBoxControl Grid.Row="0" Title="Vacuum Target" Unit="Toor" MinValue="0" MaxValue="200"  Width="300"                                                                 IntValue="{Binding Recipe.VacuumTarget,Mode=TwoWay}"                                                                  ValidResult="{Binding PropertyValidResultDic[VacuumTarget],Mode=TwoWay}" />                    <UserControls:GroupTextBoxControl Grid.Row="1" Title="Dry Hold Time" Unit="Sec" MinValue="0" MaxValue="800"  Width="300"                                              IntValue="{Binding Recipe.DryHoldTime,Mode=TwoWay}"                                               ValidResult="{Binding PropertyValidResultDic[DryHoldTime],Mode=TwoWay}" />                    <GroupBox Grid.Row="2" IsEnabled="{Binding Enable}" Margin="0,10,0,0">                        <Grid>                            <Label Content="Spray Bar" Height="30" VerticalAlignment="Top" />                            <RadioButton Content="EXT" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"           Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.IsSprayBarRetract ,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="158,-1,0,-6" ></RadioButton>                            <RadioButton Content="RET" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center"             Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.IsSprayBarRetract,Mode=TwoWay}" Margin="220,-1,0,-6" ></RadioButton>                        </Grid>                    </GroupBox>                    <GroupBox Grid.Row="3" IsEnabled="{Binding Enable}" Margin="0,10,0,0">                        <Grid>                            <Label Content="Drip Enable" Height="30" VerticalAlignment="Top" />                            <RadioButton Content="True" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.VacuumPrewetDripEnable ,Mode=TwoWay}" Margin="158,-1,0,-6" ></RadioButton>                            <RadioButton Content="False" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center"  Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.VacuumPrewetDripEnable,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="220,-1,0,-6" ></RadioButton>                        </Grid>                    </GroupBox>                    <GroupBox Grid.Row="4" IsEnabled="{Binding Enable}" Margin="0,10,0,0">                        <Grid>                            <Label Content="Small Enable" Height="30" VerticalAlignment="Top" />                            <RadioButton Content="True" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.VacuumPrewetSmallEnable ,Mode=TwoWay}" Margin="158,-1,0,-6" ></RadioButton>                            <RadioButton Content="False" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center"  Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.VacuumPrewetSmallEnable,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="220,-1,0,-6" ></RadioButton>                        </Grid>                    </GroupBox>                    <GroupBox Grid.Row="5" IsEnabled="{Binding Enable}" Margin="0,10,0,0">                        <Grid>                            <Label Content="Large" Height="30" VerticalAlignment="Top" />                            <RadioButton Content="True" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.VacuumPrewetLargeEnable ,Mode=TwoWay}" Margin="158,-1,0,-6" ></RadioButton>                            <RadioButton Content="False" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center"  Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.VacuumPrewetLargeEnable,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="220,-1,0,-6" ></RadioButton>                        </Grid>                    </GroupBox>                    <DataGrid x:Name="VacuumPrewetRinseGrid"  Width="215" MinRowHeight="27" Grid.Row="6" AutoGenerateColumns="False"  CanUserAddRows="False"  FontFamily="Arial" FontSize="14" Margin="12,88,73,-78"           ItemsSource="{Binding Recipe.VacuumRinseStep}" SelectionMode="Single" IsEnabled="{Binding Enable}" SelectedIndex="{Binding SelectedVacuumPrewetIndex,Mode=TwoWay}"                              ScrollViewer.HorizontalScrollBarVisibility="Disabled"  ScrollViewer.VerticalScrollBarVisibility="Auto">                        <DataGrid.Resources>                            <extendedControls:BindingProxy x:Key="DataShowProxy"  Data="{Binding}" />                        </DataGrid.Resources>                        <DataGrid.Columns>                            <DataGridTextColumn Header="Step" IsReadOnly="True" Width="50"  Binding="{Binding Step,Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False"/>                            <DataGridTextColumn Header="Time(sec)" Width="80"  Binding="{Binding DurationSeconds,Mode=TwoWay,ValidatesOnDataErrors=True}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" >                                <DataGridTextColumn.ElementStyle>                                    <Style TargetType="TextBlock">                                        <Setter Property="ToolTip"                    Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.ElementStyle>                                <DataGridTextColumn.EditingElementStyle>                                    <Style TargetType="TextBox">                                        <Setter Property="ToolTip"                    Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.EditingElementStyle>                            </DataGridTextColumn>                            <DataGridTextColumn Header="Speed(rpm)" Width="85"  Binding="{Binding RotationSpeed,Mode=TwoWay,ValidatesOnDataErrors=True}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" >                                <DataGridTextColumn.ElementStyle>                                    <Style TargetType="TextBlock">                                        <Setter Property="ToolTip"                    Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.ElementStyle>                                <DataGridTextColumn.EditingElementStyle>                                    <Style TargetType="TextBox">                                        <Setter Property="ToolTip"                    Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.EditingElementStyle>                            </DataGridTextColumn>                        </DataGrid.Columns>                    </DataGrid>                </Grid>            </GroupBox>            <GroupBox  Header="0.Prewet Prepare" Grid.Column="0"  Padding="10"  Grid.Row="0">                <Grid>                    <Grid.RowDefinitions>                        <RowDefinition Height="45"></RowDefinition>                        <RowDefinition Height="75"></RowDefinition>                    </Grid.RowDefinitions>                    <Grid.ColumnDefinitions>                        <ColumnDefinition Width="58.205"></ColumnDefinition>                        <ColumnDefinition Width="241.795"/>                    </Grid.ColumnDefinitions>                    <UserControls:GroupTextBoxControl Grid.Row="1" Title="DIW Loop DO" Unit="ppm" MinValue="0" MaxValue="10"  Width="300"                                                                 IntValue="{Binding Recipe.DiwLoopDoSet,Mode=TwoWay}"                                                                  ValidResult="{Binding PropertyValidResultDic[DiwLoopDoSet],Mode=TwoWay}" Grid.ColumnSpan="2" />                    <GroupBox Grid.Row="0" IsEnabled="{Binding Enable}" Margin="0,10,0,0" Grid.ColumnSpan="2">                        <Grid>                            <Label Content="Purge Enable" Height="30" VerticalAlignment="Top" />                            <RadioButton Content="True" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"           Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.PurgeEnable,Mode=TwoWay}" Margin="158,-1,0,-6" ></RadioButton>                            <RadioButton Content="False" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center"             Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.PurgeEnable,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="220,-1,0,-6" ></RadioButton>                        </Grid>                    </GroupBox>                </Grid>            </GroupBox>            <GroupBox  Header="4.Spin Off" Grid.Column="0"  Padding="10"  Grid.Row="1">                <Grid>                    <Grid.RowDefinitions>                        <RowDefinition Height="75"></RowDefinition>                        <RowDefinition Height="75"></RowDefinition>                    </Grid.RowDefinitions>                    <Grid.ColumnDefinitions>                        <ColumnDefinition Width="58.205"></ColumnDefinition>                        <ColumnDefinition Width="241.795"/>                    </Grid.ColumnDefinitions>                    <UserControls:GroupTextBoxControl Grid.Row="0" Title="Spin Speed" Unit="rpm" MinValue="0" MaxValue="1000"  Width="300"                                                      IntValue="{Binding Recipe.SpinSpeed,Mode=TwoWay}"                                                       ValidResult="{Binding PropertyValidResultDic[SpinSpeed],Mode=TwoWay}" Grid.ColumnSpan="2" />                    <UserControls:GroupTextBoxControl Grid.Row="1" Title="Spin Time" Unit="sec" MinValue="0" MaxValue="10"  Width="300"                                   IntValue="{Binding Recipe.SpinTime,Mode=TwoWay}"                                    ValidResult="{Binding PropertyValidResultDic[SpinTime],Mode=TwoWay}" Grid.ColumnSpan="2" />                </Grid>            </GroupBox>            <GroupBox  Header="2.Vent Prewet" Grid.Column="1"  Padding="10" Grid.Row="0" Grid.RowSpan="2">                <Grid Margin="0,0,0,0">                    <Grid.RowDefinitions>                        <RowDefinition Height="45"></RowDefinition>                        <RowDefinition Height="45"></RowDefinition>                        <RowDefinition Height="45"></RowDefinition>                        <RowDefinition Height="300"></RowDefinition>                    </Grid.RowDefinitions>                    <Grid.ColumnDefinitions>                        <ColumnDefinition Width="300"></ColumnDefinition>                    </Grid.ColumnDefinitions>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Add Below" Height="25" Width="80" FontSize="10" Command="{Binding VentPrewetAddBelowCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,-100,-20,0"></Button>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Add Above" Height="25" Width="80" FontSize="10" Command="{Binding VentPrewetAddAboveCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,-30,-20,0"></Button>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Move Up" Height="25" Width="80" FontSize="10" Command="{Binding VentPrewetMoveUpCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,40,-20,0"></Button>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Move Down" Height="25" Width="80" FontSize="10" Command="{Binding VentPrewetMoveDownCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,110,-20,0"></Button>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Delete" Height="25" Width="80" FontSize="10" Command="{Binding VentPrewetDeleteCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,180,-20,0"></Button>                    <UserControls:GroupTextBoxControl Grid.Row="3" Title="Flow Set Ponit" Unit="L/min" MinValue="0" MaxValue="10" Width="120" Margin="-1,2,201,220"                                                          IntValue="{Binding Recipe.VentPrewetFlowSetPoint,Mode=TwoWay}"                                                           ValidResult="{Binding PropertyValidResultDic[VentPrewetFlowSetPoint],Mode=TwoWay}"  />                    <UserControls:GroupTextBoxControl Grid.Row="3" Title="Flow Warning" Unit="%" MinValue="0" MaxValue="100" Margin="96,2,84,220" Width="120"                                           IntValue="{Binding Recipe.VentPrewetFlowWarningPercent,Mode=TwoWay}"                                            ValidResult="{Binding PropertyValidResultDic[VentPrewetFlowWarningPercent],Mode=TwoWay}"  />                    <UserControls:GroupTextBoxControl Grid.Row="3" Title="Flow Fault" Unit="%" MinValue="0" MaxValue="100" Margin="213,2,-15,220" Width="120"                                           IntValue="{Binding Recipe.VentPrewetFlowErrorPercent,Mode=TwoWay}"                                            ValidResult="{Binding PropertyValidResultDic[VentPrewetFlowErrorPercent],Mode=TwoWay}"  />                    <GroupBox Grid.Row="0" IsEnabled="{Binding Enable}" Margin="0,10,0,0">                        <Grid>                            <Label Content="Drip Enable" Height="30" VerticalAlignment="Top" />                            <RadioButton Content="True" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.VentPrewetDripEnable ,Mode=TwoWay}" Margin="158,-1,0,-6" ></RadioButton>                            <RadioButton Content="False" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center"  Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.VentPrewetDripEnable,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="220,-1,0,-6" ></RadioButton>                        </Grid>                    </GroupBox>                    <GroupBox Grid.Row="1" IsEnabled="{Binding Enable}" Margin="0,10,0,0">                        <Grid>                            <Label Content="Small Enable" Height="30" VerticalAlignment="Top" />                            <RadioButton Content="True" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.VentPrewetSmallEnable ,Mode=TwoWay}" Margin="158,-1,0,-6" ></RadioButton>                            <RadioButton Content="False" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center"  Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.VentPrewetSmallEnable,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="220,-1,0,-6" ></RadioButton>                        </Grid>                    </GroupBox>                    <GroupBox Grid.Row="2" IsEnabled="{Binding Enable}" Margin="0,10,0,0">                        <Grid>                            <Label Content="Large" Height="30" VerticalAlignment="Top" />                            <RadioButton Content="True" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.VentPrewetLargeEnable ,Mode=TwoWay}" Margin="158,-1,0,-6" ></RadioButton>                            <RadioButton Content="False" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center"  Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.VentPrewetLargeEnable,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="220,-1,0,-6" ></RadioButton>                        </Grid>                    </GroupBox>                    <DataGrid x:Name="VentPrewetRinseGrid" Width="215" MinRowHeight="27" Grid.Row="3" AutoGenerateColumns="False"  CanUserAddRows="False"  FontFamily="Arial" FontSize="14" Margin="8,89,77,1"           ItemsSource="{Binding Recipe.VentRinseStep}" SelectionMode="Single" IsEnabled="{Binding Enable}" SelectedIndex="{Binding SelectedVentPrewetIndex,Mode=TwoWay}"                              ScrollViewer.HorizontalScrollBarVisibility="Disabled"  ScrollViewer.VerticalScrollBarVisibility="Auto" >                        <DataGrid.Resources>                            <extendedControls:BindingProxy x:Key="DataShowProxy"  Data="{Binding}" />                        </DataGrid.Resources>                        <DataGrid.Columns>                            <DataGridTextColumn Header="Step" Width="50"  IsReadOnly="True" Binding="{Binding Step,Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False"/>                            <DataGridTextColumn Header="Time(sec)" Width="80"  Binding="{Binding DurationSeconds,Mode=TwoWay,ValidatesOnDataErrors=True}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" >                                <DataGridTextColumn.ElementStyle>                                    <Style TargetType="TextBlock">                                        <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.ElementStyle>                                <DataGridTextColumn.EditingElementStyle>                                    <Style TargetType="TextBox">                                        <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.EditingElementStyle>                            </DataGridTextColumn>                            <DataGridTextColumn Header="Speed(rpm)" Width="85"  Binding="{Binding RotationSpeed,Mode=TwoWay,ValidatesOnDataErrors=True}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" >                                <DataGridTextColumn.ElementStyle>                                    <Style TargetType="TextBlock">                                        <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.ElementStyle>                                <DataGridTextColumn.EditingElementStyle>                                    <Style TargetType="TextBox">                                        <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.EditingElementStyle>                            </DataGridTextColumn>                        </DataGrid.Columns>                    </DataGrid>                </Grid>            </GroupBox>            <GroupBox  Header="3.Extend Clean" Grid.Column="2"  Padding="10" Grid.Row="0" Grid.RowSpan="2">                <Grid>                    <Grid.RowDefinitions>                        <RowDefinition Height="45"></RowDefinition>                        <RowDefinition Height="45"></RowDefinition>                        <RowDefinition Height="45"></RowDefinition>                        <RowDefinition Height="200"></RowDefinition>                    </Grid.RowDefinitions>                    <Grid.ColumnDefinitions>                        <ColumnDefinition Width="300"></ColumnDefinition>                    </Grid.ColumnDefinitions>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Add Below" Height="25" Width="80" FontSize="10" Command="{Binding ExtendCleanAddBelowCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,10,-20,0"></Button>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Add Above" Height="25" Width="80" FontSize="10" Command="{Binding ExtendCleanAddAboveCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,80,-20,0"></Button>                    <Button Grid.Row="6" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Move Up" Height="25" Width="80" FontSize="10" Command="{Binding ExtendCleanMoveUpCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,150,-20,0"></Button>                    <Button Grid.Row="3" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Move Down" FontSize="10" Height="26" Width="80" Command="{Binding ExtendCleanMoveDownCommand}" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,-20,-23"/>                    <Button Grid.Row="3" Style="{StaticResource SysBtnStyle}"  IsEnabled="{Binding Enable}" Content="Delete" Height="24" Width="80" FontSize="10" Command="{Binding ExtendCleanDeleteCommand}" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,-20,-57"></Button>                    <UserControls:GroupTextBoxControl Grid.Row="3" Title="Flow Set Ponit" Unit="L/min" MinValue="0" MaxValue="10" Width="120" Margin="1,3,199,123"                                       IntValue="{Binding Recipe.ExtendCleanFlowSetPoint,Mode=TwoWay}"                                        ValidResult="{Binding PropertyValidResultDic[ExtendCleanFlowSetPoint],Mode=TwoWay}"  />                    <UserControls:GroupTextBoxControl Grid.Row="3" Title="Flow Warning" Unit="%" MinValue="0" MaxValue="100" Margin="100,2,105,122" Width="120"                        IntValue="{Binding Recipe.ExtendCleanFlowWarningPercent,Mode=TwoWay}"                         ValidResult="{Binding PropertyValidResultDic[ExtendCleanFlowWarningPercent],Mode=TwoWay}"  />                    <UserControls:GroupTextBoxControl Grid.Row="3" Title="Flow Fault" Unit="%" MinValue="0" MaxValue="100" Margin="196,1,-16,122" Width="120"                        IntValue="{Binding Recipe.ExtendCleanFlowErrorPercent,Mode=TwoWay}"                         ValidResult="{Binding PropertyValidResultDic[ExtendCleanFlowErrorPercent],Mode=TwoWay}"  />                    <GroupBox Grid.Row="0" IsEnabled="{Binding Enable}" Margin="0,10,0,0">                        <Grid>                            <Label Content="Drip Enable" Height="30" VerticalAlignment="Top" />                            <RadioButton Content="True" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.ExtendCleanDripEnable ,Mode=TwoWay}" Margin="158,-1,0,-6" ></RadioButton>                            <RadioButton Content="False" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center"  Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.ExtendCleanDripEnable,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="220,-1,0,-6" ></RadioButton>                        </Grid>                    </GroupBox>                    <GroupBox Grid.Row="1" IsEnabled="{Binding Enable}" Margin="0,10,0,0">                        <Grid>                            <Label Content="Small Enable" Height="30" VerticalAlignment="Top" />                            <RadioButton Content="True" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.ExtendCleanSmallEnable ,Mode=TwoWay}" Margin="158,-1,0,-6" ></RadioButton>                            <RadioButton Content="False" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center"  Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.ExtendCleanSmallEnable,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="220,-1,0,-6" ></RadioButton>                        </Grid>                    </GroupBox>                    <GroupBox Grid.Row="2" IsEnabled="{Binding Enable}" Margin="0,10,0,0">                        <Grid>                            <Label Content="Large" Height="30" VerticalAlignment="Top" />                            <RadioButton Content="True" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Left"Command="{Binding AutoCurrentBasedFalseCommand}"  IsChecked="{Binding Recipe.ExtendCleanLargeEnable ,Mode=TwoWay}" Margin="158,-1,0,-6" ></RadioButton>                            <RadioButton Content="False" Height="30" Width="60" VerticalContentAlignment="Center" HorizontalAlignment="Center"  Command="{Binding AutoCurrentBasedTrueCommand}"  IsChecked="{Binding Recipe.ExtendCleanLargeEnable,Mode=TwoWay,Converter={StaticResource boolReverseConverter}}" Margin="220,-1,0,-6" ></RadioButton>                        </Grid>                    </GroupBox>                    <DataGrid x:Name="ExtendCleanRinseGrid" Width="215" MinRowHeight="27" Grid.Row="3" AutoGenerateColumns="False"  CanUserAddRows="False"  FontFamily="Arial" FontSize="14" Margin="12,93,73,-83"           ItemsSource="{Binding Recipe.ExtendCleanRinseStep}" SelectionMode="Single" IsEnabled="{Binding Enable}" SelectedIndex="{Binding SelectedExtendCleanIndex,Mode=TwoWay}"                              ScrollViewer.HorizontalScrollBarVisibility="Disabled"  ScrollViewer.VerticalScrollBarVisibility="Auto">                        <DataGrid.Resources>                            <extendedControls:BindingProxy x:Key="DataShowProxy"  Data="{Binding}" />                        </DataGrid.Resources>                        <DataGrid.Columns>                            <DataGridTextColumn Header="Step" Width="50"  IsReadOnly="True" Binding="{Binding Step,Mode=TwoWay}" CanUserSort="false" CanUserReorder="False" CanUserResize="False"/>                            <DataGridTextColumn Header="Time(sec)" Width="80"  Binding="{Binding DurationSeconds,Mode=TwoWay,ValidatesOnDataErrors=True}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" >                                <DataGridTextColumn.ElementStyle>                                    <Style TargetType="TextBlock">                                        <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.ElementStyle>                                <DataGridTextColumn.EditingElementStyle>                                    <Style TargetType="TextBox">                                        <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.EditingElementStyle>                            </DataGridTextColumn>                            <DataGridTextColumn Header="Speed(rpm)" Width="85"  Binding="{Binding RotationSpeed,Mode=TwoWay,ValidatesOnDataErrors=True}" CanUserSort="false" CanUserReorder="False" CanUserResize="False" >                                <DataGridTextColumn.ElementStyle>                                    <Style TargetType="TextBlock">                                        <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.ElementStyle>                                <DataGridTextColumn.EditingElementStyle>                                    <Style TargetType="TextBox">                                        <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>                                    </Style>                                </DataGridTextColumn.EditingElementStyle>                            </DataGridTextColumn>                        </DataGrid.Columns>                    </DataGrid>                </Grid>            </GroupBox>        </Grid>    </Grid></UserControl>
 |