| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459 | <UserControl x:Class="FurnaceUI.Controls.HeaterControl"             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:ctrl="http://OpenSEMI.Ctrlib.com/presentation"             xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"             xmlns:cal="http://www.caliburn.org"             xmlns:deviceControl="clr-namespace:Aitex.Core.UI.DeviceControl;assembly=MECF.Framework.UI.Core"             xmlns:local="clr-namespace:FurnaceUI.Controls"             mc:Ignorable="d"              d:DesignHeight="590" d:DesignWidth="800" x:Name="self">    <Grid Margin="-1,-1,-1,-1">        <Grid.RowDefinitions>            <RowDefinition Height="36"/>            <RowDefinition Height="26"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>            <RowDefinition Height="32"/>        </Grid.RowDefinitions>        <Grid.ColumnDefinitions>            <ColumnDefinition Width="200"/>            <ColumnDefinition Width="150"/>            <ColumnDefinition Width="150"/>            <ColumnDefinition Width="150"/>            <ColumnDefinition Width="150"/>        </Grid.ColumnDefinitions>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,1,1,0" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="5"  Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.DisplayName}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="20" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,1,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="1" Grid.Column="0"  Padding="5,1">            <TextBlock Text="Parameter" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,1,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="1" Grid.Column="1" Padding="5,1">            <TextBlock Text="Feedback" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,1,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" Padding="5,1">            <TextBlock Text="SetPoint" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center"/>        </Border>        <!--<Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,1,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="1" Grid.Column="3" Padding="5,1">            <TextBlock Text="SetPoint" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" HorizontalAlignment="Center"/>        </Border>-->        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,1,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="1" Grid.Column="4" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="2" Grid.Column="0"   Padding="5,1">            <TextBlock Text="Status" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="2" Grid.Column="1" Padding="5,1">            <deviceControl:AITSensor Margin="-2,0,3,0" GreenColor="True" LightOnValue="{Binding DeviceData.IsRun}" EnableToolTip="False" />        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="2" Grid.Column="2" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="2" Grid.Column="3" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="2" Grid.Column="4" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="3" Grid.Column="0" Padding="5,1">            <TextBlock Text="Temperature (°C)" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="3" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.FeedBack, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="3" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.SetPoint, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Bottom" Margin="0,0,0,3"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="3" Grid.Column="3" Padding="5,1">            <ctrl:TextBoxEx Height="28" x:Name="tbTemp"  Text="{Binding ElementName=self, Path=DeviceData.SetPoint, Mode=OneTime}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" IsEnabled="{Binding IsManagerPermission}" Tag="Number"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="3" Grid.Column="4" Padding="5,1">            <Button Content="Set" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetTemperature"/>                            <cal:Parameter Value="{Binding ElementName=tbTemp, Path=Text}"/>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="4" Grid.Column="0"   Padding="5,1">            <TextBlock Text="Proportional coefficient (P)" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="4" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.ProportioningFeedBack, StringFormat=\{0:F1\}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="4" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.ProportioningSetPoint, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="4" Grid.Column="3" Padding="5,1">            <ctrl:TextBoxEx Height="28" x:Name="tbProportioning" Text="{Binding ElementName=self, Path=DeviceData.ProportioningSetPoint,Mode=OneTime}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" IsEnabled="{Binding IsManagerPermission}" Tag="Number"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="4" Grid.Column="4" Padding="5,1">            <Button Content="Set" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetProportioning"></cal:Parameter>                            <cal:Parameter Value="{Binding ElementName=tbProportioning, Path=Text}"></cal:Parameter>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="5" Grid.Column="0" Padding="5,1">            <TextBlock Text="Integral coefficient (I)" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="5" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.IntegralFeedBack, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="5" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.IntegralSetPoint, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Bottom" Margin="0,0,0,3"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="5" Grid.Column="3" Padding="5,1">            <ctrl:TextBoxEx Height="28" x:Name="tbIntegral"  Text="{Binding ElementName=self, Path=DeviceData.IntegralSetPoint, Mode=OneTime}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" IsEnabled="{Binding IsManagerPermission}" Tag="Number"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="5" Grid.Column="4" Padding="5,1">            <Button Content="Set" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetIntegral"></cal:Parameter>                            <cal:Parameter Value="{Binding ElementName=tbIntegral, Path=Text}"></cal:Parameter>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="6" Grid.Column="0" Padding="5,1">            <TextBlock Text="Differential coefficient (D)" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="6" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.DerivativeFeedBack, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="6" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.DerivativeSetPoint, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="6" Grid.Column="3" Padding="5,1">            <ctrl:TextBoxEx Height="28" x:Name="tbDerivative" Text="{Binding ElementName=self, Path=DeviceData.DerivativeSetPoint, Mode=OneTime}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" IsEnabled="{Binding IsManagerPermission}" Tag="Number"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="6" Grid.Column="4" Padding="5,1">            <Button Content="Set" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetDerivative"></cal:Parameter>                            <cal:Parameter Value="{Binding ElementName=tbDerivative, Path=Text}"></cal:Parameter>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="7" Grid.Column="0" Padding="5,1">            <TextBlock Text="LSP Increase Ramp Rate" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="7" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.LspIncreaseRampRateFeedBack, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="7" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.LspIncreaseRampRateSetPoint, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="7" Grid.Column="3" Padding="5,1">            <ctrl:TextBoxEx Height="28" x:Name="tbLspIncreaseRampRate" Text="{Binding ElementName=self, Path=DeviceData.LspIncreaseRampRateSetPoint, Mode=OneTime}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" IsEnabled="{Binding IsManagerPermission}" Tag="Number"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="7" Grid.Column="4" Padding="5,1">            <Button Content="Set" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetLspIncreaseRampRate"></cal:Parameter>                            <cal:Parameter Value="{Binding ElementName=tbLspIncreaseRampRate, Path=Text}"></cal:Parameter>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="8" Grid.Column="0"   Padding="5,1">            <TextBlock Text="LSP Decrease Ramp Rate" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="8" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.LspDecreaseRampRateFeedBack, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="8" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.LspDecreaseRampRateSetPoint, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="8" Grid.Column="3" Padding="5,1">            <ctrl:TextBoxEx Height="28" x:Name="tbLspDecreaseRampRate" Text="{Binding ElementName=self, Path=DeviceData.LspDecreaseRampRateSetPoint, Mode=OneTime}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" IsEnabled="{Binding IsManagerPermission}" Tag="Number"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="8" Grid.Column="4" Padding="5,1">            <Button Content="Set" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetLspDecreaseRampRate"/>                            <cal:Parameter Value="{Binding ElementName=tbLspDecreaseRampRate, Path=Text}"/>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="9" Grid.Column="0" Padding="5,1">            <TextBlock Text="RSP Increase Ramp Rate" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="9" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.RspIncreaseRampRateFeedBack, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="9" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.RspIncreaseRampRateSetPoint, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="9" Grid.Column="3" Padding="5,1">            <ctrl:TextBoxEx Height="28" x:Name="tbRspIncreaseRampRate" Text="{Binding ElementName=self, Path=DeviceData.RspIncreaseRampRateSetPoint, Mode=OneTime}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" IsEnabled="{Binding IsManagerPermission}" Tag="Number"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="9" Grid.Column="4" Padding="5,1">            <Button Content="Set" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetRspIncreaseRampRate"/>                            <cal:Parameter Value="{Binding ElementName=tbRspIncreaseRampRate, Path=Text}"/>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="10" Grid.Column="0" Padding="5,1">            <TextBlock Text="RSP Decrease Ramp Rate" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="10" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.RspDecreaseRampRateFeedBack, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="10" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.RspDecreaseRampRateSetPoint, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="10" Grid.Column="3" Padding="5,1">            <ctrl:TextBoxEx Height="28" x:Name="tbRspDecreaseRampRate" Text="{Binding ElementName=self, Path=DeviceData.RspDecreaseRampRateSetPoint, Mode=OneTime}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" FontFamily="Arial" VerticalAlignment="Center" IsEnabled="{Binding IsManagerPermission}" Tag="Number">                <TextBox.InputBindings>                    <KeyBinding Command="{Binding Path=PMMonitorCommand}" Key="Enter" CommandParameter="{Binding ElementName=tbMFC3}"/>                </TextBox.InputBindings>            </ctrl:TextBoxEx>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="10" Grid.Column="4" Padding="5,1">            <Button Content="Set" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetRspDecreaseRampRate"/>                            <cal:Parameter Value="{Binding ElementName=tbRspDecreaseRampRate, Path=Text}"/>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="11" Grid.Column="0" Padding="5,1">            <TextBlock Text="PV (°C)" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="11" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.ProcessVariable, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="11" Grid.Column="2" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="11" Grid.Column="3" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="11" Grid.Column="4" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="12" Grid.Column="0"  Padding="5,1">            <TextBlock Text="MV (%)" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="12" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.ManipulatedVariable, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="12" Grid.Column="2" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="12" Grid.Column="3" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="12" Grid.Column="4" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="13" Grid.Column="0" Padding="5,1">            <TextBlock Text="LSP/RSP Mode" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="13" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.IsLspModeFeedBack, Converter={StaticResource HeaterLspModeConverter}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="13" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.IsLspModeSetPoint, Converter={StaticResource HeaterLspModeConverter}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="13" Grid.Column="3" Padding="5,1">            <Button Content="LSP Mode" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetLspMode"/>                            <cal:Parameter Value="true"/>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="13" Grid.Column="4" Padding="5,1">            <Button Content="RSP Mode" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetLspMode"/>                            <cal:Parameter Value="false"/>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="14" Grid.Column="0" Padding="5,1">            <TextBlock Text="AT Mode" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="14" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.IsAutoTuningFeedBack, Converter={StaticResource HeaterATModeConverter}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="14" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.IsAutoTuningSetPoint, Converter={StaticResource HeaterATModeConverter}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="14" Grid.Column="3" Padding="5,1">            <Button Content="AT Start" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetAutoTuning"/>                            <cal:Parameter Value="true"/>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="14" Grid.Column="4" Padding="5,1">            <Button Content="AT Stop" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetAutoTuning"/>                            <cal:Parameter Value="false"/>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="15" Grid.Column="0" Padding="5,1">            <TextBlock Text="Offset Table" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="15" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.OffsetTable}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="15" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.OffsetTable}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="15" Grid.Column="3" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="15" Grid.Column="4" Padding="5,1">            <Button Content="Select Table" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetOffsetTable"/>                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.OffsetTable}"/>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="16" Grid.Column="0" Padding="5,1">            <TextBlock Text="Profile Table" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="16" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.ProfileTable}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="16" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.ProfileTable, StringFormat={}{0:f1}}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="16" Grid.Column="3" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="16" Grid.Column="4" Padding="5,1">            <Button Content="Select Table" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SetValue">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetProfileTable"/>                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.ProfileTable}"/>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1" Background="{DynamicResource Table_BG_Title}" Grid.Row="17" Grid.Column="0" Padding="5,1">            <TextBlock Text="Alarm Watch Table" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Left"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="17" Grid.Column="1" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.AlarmWatchTable}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="17" Grid.Column="2" Padding="5,1">            <TextBlock Text="{Binding ElementName=self, Path=DeviceData.AlarmWatchTable}" TextWrapping="Wrap" Foreground="{DynamicResource FG_Black}" FontSize="14" VerticalAlignment="Center"/>        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Content_Inner}" Grid.Row="17" Grid.Column="3" Padding="5,1">        </Border>        <Border BorderBrush="{DynamicResource Table_BD}" BorderThickness="0,0,1,1" Background="{DynamicResource Table_BG_Title_Inner}" Grid.Row="17" Grid.Column="4" Padding="5,1">            <Button Content="Select Table" Width="120" Height="28" Margin="0" FontSize="13" IsEnabled="{Binding IsManagerPermission}" >                <i:Interaction.Triggers>                    <i:EventTrigger EventName="Click">                        <cal:ActionMessage MethodName="SelectTable">                            <cal:Parameter Value="{Binding ElementName=self, Path=DeviceData.DeviceName}"/>                            <cal:Parameter Value="SetAlarmWatchTable"/>                            <cal:Parameter Value=""/>                        </cal:ActionMessage>                    </i:EventTrigger>                </i:Interaction.Triggers>            </Button>        </Border>    </Grid></UserControl>
 |