init
This commit is contained in:
@@ -0,0 +1,339 @@
|
||||
<base:BaseView x:Class="GroupChannelList.GroupChannelListView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:base="clr-namespace:DTS.Common.Base;assembly=DTS.Common"
|
||||
xmlns:controls="clr-namespace:DTS.Common.Controls;assembly=DTS.Common"
|
||||
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
||||
xmlns:strings="clr-namespace:GroupChannelList"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="768" d:DesignWidth="1366"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:converters="clr-namespace:GroupChannelList.Converters"
|
||||
xmlns:converters1="clr-namespace:DTS.Common.Converters;assembly=DTS.Common"
|
||||
xmlns:cc="clr-namespace:ChannelCodes.Model;assembly=ChannelCodes"
|
||||
xmlns:behaviors="clr-namespace:DTS.Common.Behaviors;assembly=DTS.Common"
|
||||
xmlns:my="clr-namespace:DTS.Common.Enums;assembly=DTS.Common"
|
||||
x:Name="ChannelListView">
|
||||
<base:BaseView.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Themes/CommonStyles.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Controls/combobox.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
<Style TargetType="ToggleButton">
|
||||
<Setter Property="Width" Value="20"/>
|
||||
<Setter Property="MaxWidth" Value="20"/>
|
||||
</Style>
|
||||
<Style TargetType="ListView">
|
||||
<Setter Property="ItemContainerStyle" Value="{StaticResource TTS_ListViewItemStyle}"/>
|
||||
</Style>
|
||||
<Style TargetType="TextBox" BasedOn="{StaticResource TTS_TextBoxStyle}"/>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource TTS_TextBlockStyle}"/>
|
||||
<Style TargetType="CheckBox" BasedOn="{StaticResource PageContentCheckBoxStyle}" />
|
||||
<Style TargetType="ComboBox" BasedOn="{StaticResource TTS_ComboBoxStyle}"/>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource TTS_ButtonStyle}"/>
|
||||
<Style TargetType="GridViewColumnHeader" BasedOn="{StaticResource Gray_GridViewColumnHeaderStyle}"/>
|
||||
<converters:SensorIdBackgroundConverter x:Key="BackgroundConverter" />
|
||||
<BooleanToVisibilityConverter x:Key="BoolToVisConverter"/>
|
||||
<converters1:InverseBooleanToVisibilityConverter x:Key="InverseBoolToVisConverter" />
|
||||
<converters:BooleanToWidthConverter x:Key="BooleanToWidthConverter" />
|
||||
<converters1:InverseBooleanConverter x:Key="BooleanInverseConverter" />
|
||||
<converters1:BooleanOrToVisibilityMultiConverter x:Key="BooleanOrToVisibilityMultiConverter"/>
|
||||
</ResourceDictionary>
|
||||
</base:BaseView.Resources>
|
||||
<Grid Background="{DynamicResource Brush_ApplicationContentBackground}" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<WrapPanel Grid.Row="0" Orientation="Horizontal">
|
||||
<TextBlock Text="{Binding ChannelCount, FallbackValue='0'}" Margin="10,0,0,0" AutomationProperties.AutomationId="ChannelCountLabel"/>
|
||||
<TextBlock Text="{strings:TranslateExtension Channels}" AutomationProperties.AutomationId="ChannelsLabel"/>
|
||||
<TextBlock Text="{strings:TranslateExtension Test}" Visibility="{Binding UseTestSetupOrder, Converter={StaticResource BoolToVisConverter}}" AutomationProperties.AutomationId="TestLabel"/>
|
||||
<TextBlock Text="{strings:TranslateExtension GroupLower}" Visibility="{Binding UseTestSetupOrder, Converter={StaticResource InverseBoolToVisConverter}}" AutomationProperties.AutomationId="GroupLabel"/>
|
||||
<TextBlock Margin="5,0,5,0" Text="" />
|
||||
<TextBlock Text="{Binding AssignedPhysicalChannelCount}" />
|
||||
<TextBlock Text="{strings:TranslateExtension Of}" />
|
||||
<TextBlock Text="{Binding AvailableChannelCount}" />
|
||||
<TextBlock Text="{strings:TranslateExtension PhysicalChannelsAssigned}" />
|
||||
</WrapPanel>
|
||||
<StackPanel Grid.Row="1" Orientation="Horizontal" Margin="2">
|
||||
<Button Content="TOP" Width="30" IsEnabled="{Binding CanMoveSelectedUp}" Command="{Binding MoveSelectedChannelsToTopCommand}" AutomationProperties.AutomationId="SelectedTopButton" />
|
||||
<Button Content="5" FontFamily="Marlett" Width="20" IsEnabled="{Binding CanMoveSelectedUp}" Command="{Binding MoveSelectedChannelsUpCommand}" AutomationProperties.AutomationId="SelectedUpButton" />
|
||||
<Button Content="6" FontFamily="Marlett" Width="20" IsEnabled="{Binding CanMoveSelectedDown}" Command="{Binding MoveSelectedChannelsDownCommand}" AutomationProperties.AutomationId="SelectedDownButton"/>
|
||||
<Button Content="BOT" Width="30" IsEnabled="{Binding CanMoveSelectedDown}" Command="{Binding MoveSelectedChannelsToBottomCommand}" AutomationProperties.AutomationId="SelectedBottomButton" />
|
||||
<Button Content="{strings:TranslateExtension RemoveSensor}" IsEnabled="{Binding ElementName=ChannelListListView, Path=SelectedItems.Count}" Command="{Binding RemoveSelectedSensorsCommand}" AutomationProperties.AutomationId="ClearSelectedBtn" Width="120" />
|
||||
<Button Content="{strings:TranslateExtension Delete}" IsEnabled="{Binding SelectedDeleteShouldBeEnabled}" ToolTipService.ShowOnDisabled="True" Command="{Binding DeleteSelectedChannelsCommand}" AutomationProperties.AutomationId="DeleteSelectedBtn" Width="70" >
|
||||
<Button.ToolTip>
|
||||
<ToolTip Visibility="{Binding SelectedDeleteShouldDisplayTooltip, Converter={StaticResource BoolToVisConverter}}">
|
||||
<TextBlock Text="{strings:TranslateExtension ChannelDelete_Tooltip}"/>
|
||||
</ToolTip>
|
||||
</Button.ToolTip>
|
||||
</Button>
|
||||
<Button Margin="12,3,3,0" Content="Move after row" Width="100" IsEnabled="{Binding SelectedDeleteShouldBeEnabled}" Command="{Binding MoveSelectedChannelsToIndexCommand}" AutomationProperties.AutomationId="MoveToIndexButton" />
|
||||
<xctk:DoubleUpDown Value="{Binding Path=ExpectedIndex}" Margin="3,3,3,0" Width="60" Minimum="0" Maximum="{Binding ChannelCount}" />
|
||||
</StackPanel>
|
||||
<ListView Grid.Row="2" ItemsSource="{Binding Channels, UpdateSourceTrigger=PropertyChanged}"
|
||||
AutomationProperties.AutomationId="ChannelListView" AllowDrop="True" DragOver="ChannelList_DragOver"
|
||||
x:Name="ChannelListListView" Drop="ChannelList_Drop" SelectionMode="Extended"
|
||||
VirtualizingStackPanel.IsVirtualizing="True" KeyUp="ListView_KeyUp"
|
||||
>
|
||||
<i:Interaction.Behaviors>
|
||||
<behaviors:MultiSelectionBehavior SelectedItems="{Binding SelectedChannelItems}" />
|
||||
</i:Interaction.Behaviors>
|
||||
<ListView.ItemContainerStyle>
|
||||
<Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource TTS_ListViewItemStyle}">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=ChannelStatus}" Value="{x:Static my:UIItemStatus.Success}">
|
||||
<Setter Property="Background" Value="{StaticResource Brush_ApplicationStatus_Complete}" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Path=ChannelStatus}" Value="{x:Static my:UIItemStatus.Error}">
|
||||
<Setter Property="Background" Value="{StaticResource Brush_ApplicationStatus_Failed}" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Path=ChannelStatus}" Value="{x:Static my:UIItemStatus.Warning}">
|
||||
<Setter Property="Background" Value="{StaticResource Brush_Amber}" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Path=ChannelStatus}" Value="{x:Static my:UIItemStatus.None}">
|
||||
<Setter Property="Background" Value="{StaticResource Brush_Table_RowBackground}" />
|
||||
</DataTrigger>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="{StaticResource Brush_ApplicationSelectedBackground}" />
|
||||
</Trigger>
|
||||
<DataTrigger Binding="{Binding ElementName=ChannelListView, Path=ReadOnlyChannelsMode}" Value="True">
|
||||
<Setter Property="IsEnabled" Value="False" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ListView.ItemContainerStyle>
|
||||
<ListView.View>
|
||||
<controls:AutoSizedGridView AutomationProperties.AutomationId="CustomChannelsListGridView">
|
||||
<GridViewColumn AutomationProperties.AutomationId="GroupColumn" x:Name="GroupColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="GroupName" HeaderTitle="{strings:TranslateExtension Group}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" />
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBox AutomationProperties.AutomationId="GroupNameTextBox" MinWidth="200" IsEnabled="{Binding GroupNameEditable}" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" behaviors:TextBoxPasteBehavior.PasteCommand="{Binding PasteCommand}" Tag="GroupName"
|
||||
Binding.SourceUpdated="TextBoxSourceUpdated">
|
||||
<TextBox.Text>
|
||||
<Binding NotifyOnSourceUpdated="True" Path="GroupName" UpdateSourceTrigger="PropertyChanged" />
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="UserCodeColumn" x:Name="UserCodeColumn"
|
||||
Width="{Binding ShowUserCodes, Converter={StaticResource BooleanToWidthConverter}}">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UserCode" HeaderTitle="{strings:TranslateExtension UserCode}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<controls:ChannelCodeBuilder Code="{Binding UserCode, Mode=TwoWay}" CodeType="User" ChannelCodeSelected="ChannelCodeBuilder_OnChannelCodeSelected"
|
||||
ChannelCodesFunc="{Binding DataContext.ChannelCodesFunc, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
|
||||
ShowChannelCodeLookupHelper="{Binding DataContext.ShowChannelCodeLookupHelper, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
|
||||
KeyDown="TextBox_KeyDown" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" MinWidth="200"
|
||||
AutomationProperties.AutomationId="UserCodeChannelCodeBuilder" Tag="UserCode">
|
||||
<controls:ChannelCodeBuilder.Visibility>
|
||||
<MultiBinding Converter="{StaticResource BooleanOrToVisibilityMultiConverter}" ConverterParameter="FALSE|HIDE">
|
||||
<Binding Path="IsUart" />
|
||||
<Binding Path="IsStreamIn" />
|
||||
<Binding Path="IsStreamOut" />
|
||||
</MultiBinding>
|
||||
</controls:ChannelCodeBuilder.Visibility>
|
||||
</controls:ChannelCodeBuilder>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="UserChannelNameColumn" x:Name="UserChannelNameColumn"
|
||||
Width="{Binding ShowUserCodes, Converter={StaticResource BooleanToWidthConverter}}">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UserChannelName" HeaderTitle="{strings:TranslateExtension UserChannelName}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<controls:ChannelNameBuilder ChannelName="{Binding UserChannelName, Mode=TwoWay}" CodeType="User"
|
||||
ChannelCodeSelected="ChannelNameBuilder_OnChannelCodeSelected"
|
||||
ChannelNamesFunc="{Binding DataContext.ChannelCodesFunc, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
|
||||
ShowChannelCodeLookupHelper="{Binding DataContext.ShowChannelCodeLookupHelper, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
|
||||
KeyDown="TextBox_KeyDown" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" MinWidth="200"
|
||||
AutomationProperties.AutomationId="UserChannelNameTextBox" Tag="UserChannelName">
|
||||
<controls:ChannelNameBuilder.Visibility>
|
||||
<MultiBinding Converter="{StaticResource BooleanOrToVisibilityMultiConverter}" ConverterParameter="FALSE|HIDE">
|
||||
<Binding Path="IsUart" />
|
||||
<Binding Path="IsStreamIn" />
|
||||
<Binding Path="IsStreamOut" />
|
||||
</MultiBinding>
|
||||
</controls:ChannelNameBuilder.Visibility>
|
||||
</controls:ChannelNameBuilder>
|
||||
<!--<TextBox Text="{Binding UserChannelName}" AutomationProperties.AutomationId="UserChannelNameTextBox"
|
||||
MinWidth="200" KeyDown="TextBox_KeyDown" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" MaxLength="250" behaviors:TextBoxPasteBehavior.PasteCommand="{Binding PasteCommand}"
|
||||
Tag="UserChannelName"/>
|
||||
-->
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="ChannelNameColumn" x:Name="ChannelNameColumn"
|
||||
Width="{Binding ChannelNamesOnly, Converter={StaticResource BooleanToWidthConverter}}">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UserChannelName" HeaderTitle="{strings:TranslateExtension ChannelName}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBox Text="{Binding UserChannelName}" AutomationProperties.AutomationId="ChannelNameTextBox" MinWidth="200" KeyDown="TextBox_KeyDown" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" MaxLength="250" behaviors:TextBoxPasteBehavior.PasteCommand="{Binding PasteCommand}" Tag="ChannelName"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="ISOCodeColumn" x:Name="ISOCodeColumn"
|
||||
Width="{Binding ShowISOCodes, Converter={StaticResource BooleanToWidthConverter}}">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="ISOCode" HeaderTitle="{strings:TranslateExtension ISOCode}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<!--<TextBox Text="{Binding IsoCode, Mode=TwoWay}" KeyDown="TextBox_KeyDown" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" MinWidth="200"/>AllChannelCodes="{x:Static cc:ChannelCode.ChannelCodes}"-->
|
||||
<controls:ChannelCodeBuilder Code="{Binding IsoCode, Mode=TwoWay}" CodeType="ISO" ChannelCodeSelected="ChannelCodeBuilder_OnChannelCodeSelected"
|
||||
ChannelCodesFunc="{Binding DataContext.ChannelCodesFunc, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
|
||||
ShowChannelCodeLookupHelper="{Binding DataContext.ShowChannelCodeLookupHelper, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
|
||||
ShowISOStringBuilder="{Binding DataContext.ShowISOStringBuilder, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
|
||||
UniqueISOCodesRequired="{Binding DataContext.UniqueISOCodesRequired, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
|
||||
KeyDown="TextBox_KeyDown" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" MinWidth="200"
|
||||
AutomationProperties.AutomationId="ISOCodeChannelCodeBuilder" Tag="ISOCode"
|
||||
LostFocus="ISOCode_LostFocus"
|
||||
UseISOCodeFilterMapping="{Binding DataContext.UseISOCodeFilterMapping, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
|
||||
CoerceISOCode="{Binding CoerceISOCodeFunc}"
|
||||
>
|
||||
<controls:ChannelCodeBuilder.Visibility>
|
||||
<MultiBinding Converter="{StaticResource BooleanOrToVisibilityMultiConverter}" ConverterParameter="FALSE|HIDE">
|
||||
<Binding Path="IsUart" />
|
||||
<Binding Path="IsStreamIn" />
|
||||
<Binding Path="IsStreamOut" />
|
||||
</MultiBinding>
|
||||
</controls:ChannelCodeBuilder.Visibility>
|
||||
</controls:ChannelCodeBuilder>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="ISOChannelNameColumn" x:Name="ISOChannelNameColumn"
|
||||
Width="{Binding ShowISOCodes, Converter={StaticResource BooleanToWidthConverter}}">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="ISOChannelName" HeaderTitle="{strings:TranslateExtension ISOChannelName}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<controls:ChannelNameBuilder ChannelName="{Binding IsoChannelName, Mode=TwoWay}" CodeType="ISO"
|
||||
ChannelCodeSelected="ChannelNameBuilder_OnChannelCodeSelected"
|
||||
ChannelNamesFunc="{Binding DataContext.ChannelCodesFunc, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
|
||||
ShowChannelCodeLookupHelper="{Binding DataContext.ShowChannelCodeLookupHelper, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
|
||||
KeyDown="TextBox_KeyDown" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" MinWidth="200"
|
||||
AutomationProperties.AutomationId="ISOChannelNameTextBox" Tag="ISOChannelName"
|
||||
LostFocus="ISOCode_LostFocus" >
|
||||
<controls:ChannelNameBuilder.Visibility>
|
||||
<MultiBinding Converter="{StaticResource BooleanOrToVisibilityMultiConverter}" ConverterParameter="FALSE|HIDE">
|
||||
<Binding Path="IsUart" />
|
||||
<Binding Path="IsStreamIn" />
|
||||
<Binding Path="IsStreamOut" />
|
||||
</MultiBinding>
|
||||
</controls:ChannelNameBuilder.Visibility>
|
||||
</controls:ChannelNameBuilder>
|
||||
<!--<TextBox Text="{Binding IsoChannelName}" AutomationProperties.AutomationId="ISOChannelNameTextBox"
|
||||
MinWidth="200" KeyDown="TextBox_KeyDown" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop"
|
||||
MaxLength="250" behaviors:TextBoxPasteBehavior.PasteCommand="{Binding PasteCommand}" Tag="ISOChannelName"/>
|
||||
-->
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="IEPEColumn" >
|
||||
<controls:GridViewColumnHeaderSearchable Tag="IEPE" HeaderTitle="{strings:TranslateExtension ChannelType}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding IEPESupport}" AutomationProperties.AutomationId="IEPESupportBlock" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="SensorColumn" >
|
||||
<controls:GridViewColumnHeaderSearchable Tag="Sensor" HeaderTitle="{strings:TranslateExtension Sensor}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<Grid>
|
||||
<Label Visibility="{Binding EmbeddedSensor, Converter={StaticResource InverseBoolToVisConverter}}">
|
||||
<Hyperlink Click="Hyperlink_Click" IsEnabled="{Binding EmbeddedSensor, Converter={StaticResource BooleanInverseConverter}}">
|
||||
<TextBlock Text="{Binding Sensor}" AutomationProperties.AutomationId="SensorTextBlock" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" />
|
||||
</Hyperlink>
|
||||
</Label>
|
||||
<TextBlock Text="{Binding Sensor}" AutomationProperties.AutomationId="SensorTextBlock" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop"
|
||||
Visibility="{Binding EmbeddedSensor, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
</Grid>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="DallasIdColumn" x:Name="DallasIdColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="DallasId" HeaderTitle="{strings:TranslateExtension DallasId}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding Path=SensorData.EID, FallbackValue='---'}" AutomationProperties.AutomationId="EIDTextBlock" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop"
|
||||
Visibility="Visible"/>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="HardwareColumn" x:Name="HardwareColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="Hardware" HeaderTitle="{strings:TranslateExtension Hardware}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<Border Background="{Binding Path=HasEID, Converter={StaticResource BackgroundConverter}}" HorizontalAlignment="Stretch" >
|
||||
<TextBlock Margin="2,0,2,0" Text="{Binding Hardware}" AutomationProperties.AutomationId="HardwareTextBlock" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" />
|
||||
</Border>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="GroupOrderColumn" x:Name="GroupOrderColumn">
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel Orientation="Horizontal" Visibility="{Binding ElementName=ChannelListView, Path=DataContext.UseTestSetupOrder, Converter={StaticResource InverseBoolToVisConverter}}">
|
||||
<Button Content="TOP" Width="30" IsEnabled="{Binding CanMoveUp}" Click="MoveTop_Click" AutomationProperties.AutomationId="TopButton" />
|
||||
<Button Content="5" FontFamily="Marlett" Width="20" IsEnabled="{Binding CanMoveUp}" Click="MoveUp_Click" AutomationProperties.AutomationId="UpButton" />
|
||||
<TextBlock Text="{Binding GroupChannelOrder,FallbackValue='-1',StringFormat={}000}" VerticalAlignment="Center" AutomationProperties.AutomationId="ChannelOrderTextBlock" />
|
||||
<Button Content="6" FontFamily="Marlett" Width="20" IsEnabled="{Binding CanMoveDown}" Click="MoveDown_Click" AutomationProperties.AutomationId="DownButton"/>
|
||||
<Button Content="BOT" Width="30" IsEnabled="{Binding CanMoveDown}" Click="MoveBottom_Click" AutomationProperties.AutomationId="BottomButton" />
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="TestSetupOrderColumn" x:Name="TestSetupOrderColumn">
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel Orientation="Horizontal" Visibility="{Binding ElementName=ChannelListView, Path=DataContext.UseTestSetupOrder, Converter={StaticResource BoolToVisConverter}}">
|
||||
<Button Content="TOP" Width="30" IsEnabled="{Binding CanMoveUp}" Click="MoveTop_Click" AutomationProperties.AutomationId="TopButton"/>
|
||||
<Button Content="5" FontFamily="Marlett" Width="20" IsEnabled="{Binding CanMoveUp}" Click="MoveUp_Click" AutomationProperties.AutomationId="UpButton"/>
|
||||
<TextBlock Text="{Binding TestSetupOrder,FallbackValue='-1',StringFormat={}000}" VerticalAlignment="Center" AutomationProperties.AutomationId="ChannelOrderTextBlock"/>
|
||||
<Button Content="6" FontFamily="Marlett" Width="20" IsEnabled="{Binding CanMoveDown}" Click="MoveDown_Click" AutomationProperties.AutomationId="DownButton"/>
|
||||
<Button Content="BOT" Width="30" IsEnabled="{Binding CanMoveDown}" Click="MoveBottom_Click" AutomationProperties.AutomationId="BottomButton"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="ActionsColumn">
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button Content="{strings:TranslateExtension RemoveSensor}" Click="Clear_Click" AutomationProperties.AutomationId="ClearBtn" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" Width="120" Visibility="{Binding RemoveSensorVisibility}"/>
|
||||
<Button Content="{strings:TranslateExtension Delete}" Click="Delete_Click" AutomationProperties.AutomationId="DeleteBtn" AllowDrop="True" PreviewDragOver="TextBox_DragOver" Drop="TextBox_Drop" Width="70"
|
||||
IsEnabled="{Binding DeleteShouldBeEnabled}" ToolTipService.ShowOnDisabled="True">
|
||||
<Button.ToolTip>
|
||||
<ToolTip Visibility="{Binding DeleteShouldBeEnabled, Converter={StaticResource InverseBoolToVisConverter}}">
|
||||
<TextBlock Text="{strings:TranslateExtension ChannelDelete_Tooltip}"/>
|
||||
</ToolTip>
|
||||
</Button.ToolTip>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
</controls:AutoSizedGridView>
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
</Grid>
|
||||
</base:BaseView>
|
||||
@@ -0,0 +1,957 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using DTS.Common.Classes.Groups;
|
||||
using DTS.Common.Classes.Sensors.SensorsList;
|
||||
using DTS.Common.Controls;
|
||||
using DTS.Common.Enums;
|
||||
using DTS.Common.Enums.Channels;
|
||||
using DTS.Common.Events;
|
||||
using DTS.Common.Events.Groups.GroupChannelList;
|
||||
using DTS.Common.Interface.Channels;
|
||||
using DTS.Common.Interface.DataRecorders;
|
||||
using DTS.Common.Interface.Groups.GroupChannelList;
|
||||
using DTS.Common.Settings;
|
||||
using DTS.Common.Utils;
|
||||
|
||||
using Prism.Ioc;
|
||||
using Prism.Events;
|
||||
|
||||
// ReSharper disable CheckNamespace
|
||||
|
||||
namespace GroupChannelList
|
||||
{
|
||||
/// <inheritdoc cref="IGroupChannelListView" />
|
||||
/// <summary>
|
||||
/// Interaction logic for GroupChannelListView.xaml
|
||||
/// </summary>
|
||||
public partial class GroupChannelListView : IGroupChannelListView
|
||||
{
|
||||
/// <summary>
|
||||
/// returns whether the user input controls in the view should be read only
|
||||
/// 16284 Channels table in EditTestSetup is enabled when it shouldn't be
|
||||
/// </summary>
|
||||
public bool ReadOnlyChannelsMode
|
||||
{
|
||||
get
|
||||
{
|
||||
if (null == DataContext) { return false; }
|
||||
if (DataContext is IGroupChannelListViewModel model)
|
||||
{
|
||||
return model.ReadOnlyChannelsMode;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public GroupChannelListView()
|
||||
{
|
||||
InitializeComponent();
|
||||
var eventAggregator = ContainerLocator.Container.Resolve<IEventAggregator>();
|
||||
eventAggregator.GetEvent<ListViewStatusEvent>().Subscribe(OnListViewEvent);
|
||||
}
|
||||
|
||||
private void OnListViewEvent(ListViewStatusArg arg)
|
||||
{
|
||||
if (arg.Status != ListViewStatusArg.ListViewStatus.ScrollToBottom)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(DataContext is GroupChannelListViewModel model))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (model.ListViewId != arg.Id) { return; }
|
||||
|
||||
ChannelListListView.Items.MoveCurrentToLast();
|
||||
ChannelListListView.ScrollIntoView(ChannelListListView.Items.CurrentItem);
|
||||
}
|
||||
|
||||
private void Clear_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(DataContext is GroupChannelListViewModel viewModel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(sender is Control control))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(control.DataContext is IGroupChannel channel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
viewModel.Clear(channel);
|
||||
viewModel.NotifyChannelsChanged();
|
||||
}
|
||||
|
||||
private void Delete_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(DataContext is GroupChannelListViewModel viewModel)) { return; }
|
||||
|
||||
if (!(sender is Control control)) { return; }
|
||||
|
||||
if (!(control.DataContext is IGroupChannel channel)) { return; }
|
||||
|
||||
if (channel.IsBlank())
|
||||
{
|
||||
//14546
|
||||
// Cannot use delete action button in edit group/test
|
||||
// it's possible the channel is blank but still has an order assigned, we have to allow it to be
|
||||
// deleted still then ...
|
||||
if (viewModel.UseTestSetupOrder)
|
||||
{
|
||||
if (channel.TestSetupOrder <= 0) { return; }
|
||||
}
|
||||
else
|
||||
{
|
||||
if (channel.GroupChannelOrder <= 0) { return; }
|
||||
}
|
||||
}
|
||||
var eventAggregator = ContainerLocator.Container.Resolve<IEventAggregator>();
|
||||
eventAggregator.GetEvent<GroupChannelDeleteRequestEvent>().Publish(new GroupChannelDeleteRequestEventArgs(
|
||||
viewModel.Page,
|
||||
channel));
|
||||
}
|
||||
|
||||
private void GridViewColumnHeaderSearchable_OnSearch(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var searchTerm = (string)e.OriginalSource;
|
||||
var columnTag = (sender as GridViewColumnHeaderSearchable)?.Tag;
|
||||
var viewModel = (IGroupChannelListViewModel)DataContext;
|
||||
viewModel.Filter(columnTag, searchTerm);
|
||||
}
|
||||
|
||||
private void TextBox_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (!(DataContext is GroupChannelListViewModel viewModel)) { return; }
|
||||
|
||||
if (!(sender is Control control)) { return; }
|
||||
|
||||
if (!(control.DataContext is IGroupChannel channel)) { return; }
|
||||
|
||||
viewModel.MarkModified(channel);
|
||||
}
|
||||
|
||||
public void HandleColumns(IsoViewMode viewMode)
|
||||
{
|
||||
if (!(DataContext is IGroupChannelListViewModel vm))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var showGroups = SettingsDB.GetGlobalValueBool("ShowGroups", true);
|
||||
|
||||
if (!vm.UseTestSetupOrder || !showGroups)
|
||||
{
|
||||
RemoveGroupColumn();
|
||||
}
|
||||
else
|
||||
{
|
||||
AddGroupColumn();
|
||||
}
|
||||
|
||||
switch (viewMode)
|
||||
{
|
||||
case IsoViewMode.ISOOnly:
|
||||
RemoveUserCodeColumns();
|
||||
AddIsoCodeColumns(vm.UseTestSetupOrder);
|
||||
break;
|
||||
case IsoViewMode.ISOAndUserCode:
|
||||
AddUserAndIsoCodeColumns(vm.UseTestSetupOrder);
|
||||
break;
|
||||
case IsoViewMode.UserCodeOnly:
|
||||
RemoveIsoCodeColumns();
|
||||
AddUserCodeColumns(vm.UseTestSetupOrder, true);
|
||||
break;
|
||||
case IsoViewMode.ChannelNameOnly:
|
||||
RemoveIsoCodeColumns();
|
||||
AddUserCodeColumns(vm.UseTestSetupOrder, false);
|
||||
break;
|
||||
}
|
||||
|
||||
if (vm.UseTestSetupOrder)
|
||||
{
|
||||
ShowTestSetupOrder(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowTestSetupOrder(false);
|
||||
}
|
||||
|
||||
if (vm.ShowDallasIdColumn)
|
||||
{
|
||||
AddDallasIdColumn();
|
||||
}
|
||||
else { RemoveDallasIdColumn(); }
|
||||
}
|
||||
|
||||
private void ShowTestSetupOrder(bool test)
|
||||
{
|
||||
if (!(ChannelListListView.View is DTS.Common.Controls.AutoSizedGridView view))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (test)
|
||||
{
|
||||
if (view.Columns.Contains(GroupOrderColumn))
|
||||
{
|
||||
view.Columns.Remove(GroupOrderColumn);
|
||||
}
|
||||
|
||||
if (!view.Columns.Contains(TestSetupOrderColumn))
|
||||
{
|
||||
view.Columns.Insert(0, TestSetupOrderColumn);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (view.Columns.Contains(TestSetupOrderColumn))
|
||||
{
|
||||
view.Columns.Remove(TestSetupOrderColumn);
|
||||
}
|
||||
|
||||
if (!view.Columns.Contains(GroupOrderColumn))
|
||||
{
|
||||
view.Columns.Insert(0, GroupOrderColumn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void RemoveGroupColumn()
|
||||
{
|
||||
if (!(ChannelListListView.View is DTS.Common.Controls.AutoSizedGridView view))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (view.Columns.Contains(GroupColumn))
|
||||
{
|
||||
view.Columns.Remove(GroupColumn);
|
||||
}
|
||||
}
|
||||
private void AddDallasIdColumn()
|
||||
{
|
||||
if (!(ChannelListListView.View is AutoSizedGridView view))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!view.Columns.Contains(DallasIdColumn))
|
||||
{
|
||||
var index = view.Columns.IndexOf(HardwareColumn);
|
||||
view.Columns.Insert(index, DallasIdColumn);
|
||||
}
|
||||
}
|
||||
private void RemoveDallasIdColumn()
|
||||
{
|
||||
if (!(ChannelListListView.View is AutoSizedGridView view))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (view.Columns.Contains(DallasIdColumn))
|
||||
{
|
||||
view.Columns.Remove(DallasIdColumn);
|
||||
}
|
||||
}
|
||||
private void AddGroupColumn()
|
||||
{
|
||||
if (!(ChannelListListView.View is DTS.Common.Controls.AutoSizedGridView view))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!view.Columns.Contains(GroupColumn))
|
||||
{
|
||||
view.Columns.Insert(1, GroupColumn);
|
||||
}
|
||||
}
|
||||
private void AddUserAndIsoCodeColumns(bool usingTestSetup)
|
||||
{
|
||||
if (!(ChannelListListView.View is DTS.Common.Controls.AutoSizedGridView view))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!view.Columns.Contains(UserCodeColumn))
|
||||
{
|
||||
view.Columns.Insert(usingTestSetup ? 1 : 0, UserCodeColumn);
|
||||
}
|
||||
|
||||
if (!view.Columns.Contains(UserChannelNameColumn))
|
||||
{
|
||||
view.Columns.Insert(usingTestSetup ? 2 : 1, UserChannelNameColumn);
|
||||
}
|
||||
|
||||
if (!view.Columns.Contains(ISOCodeColumn))
|
||||
{
|
||||
view.Columns.Insert(usingTestSetup ? 3 : 2, ISOCodeColumn);
|
||||
}
|
||||
|
||||
if (!view.Columns.Contains(ISOChannelNameColumn))
|
||||
{
|
||||
view.Columns.Insert(usingTestSetup ? 4 : 3, ISOChannelNameColumn);
|
||||
}
|
||||
}
|
||||
private void AddIsoCodeColumns(bool usingTestSetup)
|
||||
{
|
||||
if (!(ChannelListListView.View is DTS.Common.Controls.AutoSizedGridView view))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!view.Columns.Contains(ISOCodeColumn))
|
||||
{
|
||||
view.Columns.Insert(usingTestSetup ? 1 : 0, ISOCodeColumn);
|
||||
}
|
||||
|
||||
if (!view.Columns.Contains(ISOChannelNameColumn))
|
||||
{
|
||||
view.Columns.Insert(usingTestSetup ? 2 : 1, ISOChannelNameColumn);
|
||||
}
|
||||
}
|
||||
private void RemoveIsoCodeColumns()
|
||||
{
|
||||
if (!(ChannelListListView.View is DTS.Common.Controls.AutoSizedGridView view))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (view.Columns.Contains(ISOCodeColumn))
|
||||
{
|
||||
view.Columns.Remove(ISOCodeColumn);
|
||||
}
|
||||
|
||||
if (view.Columns.Contains(ISOChannelNameColumn))
|
||||
{
|
||||
view.Columns.Remove(ISOChannelNameColumn);
|
||||
}
|
||||
}
|
||||
private void RemoveUserCodeColumns()
|
||||
{
|
||||
if (!(ChannelListListView.View is DTS.Common.Controls.AutoSizedGridView view))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (view.Columns.Contains(UserCodeColumn))
|
||||
{
|
||||
view.Columns.Remove(UserCodeColumn);
|
||||
}
|
||||
|
||||
if (view.Columns.Contains(UserChannelNameColumn))
|
||||
{
|
||||
view.Columns.Remove(UserChannelNameColumn);
|
||||
}
|
||||
}
|
||||
private void AddUserCodeColumns(bool usingTestSetup, bool addCodeColumn)
|
||||
{
|
||||
if (!(ChannelListListView.View is DTS.Common.Controls.AutoSizedGridView view))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var insertPoint = usingTestSetup ? 1 : 0;
|
||||
if (!view.Columns.Contains(UserCodeColumn) && addCodeColumn)
|
||||
{
|
||||
view.Columns.Insert(insertPoint, UserCodeColumn);
|
||||
}
|
||||
|
||||
if (addCodeColumn)
|
||||
{
|
||||
insertPoint++;
|
||||
}
|
||||
|
||||
if (!view.Columns.Contains(UserChannelNameColumn))
|
||||
{
|
||||
view.Columns.Insert(insertPoint, UserChannelNameColumn);
|
||||
}
|
||||
}
|
||||
private void ChannelList_DragOver(object sender, DragEventArgs e)
|
||||
{
|
||||
if (!(DataContext is IGroupChannelListViewModel vm)) { return; }
|
||||
|
||||
var lv = ChannelListListView;
|
||||
|
||||
var index = GetIndex(lv);
|
||||
if (index < 0)
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (lv.Items.Count <= index)
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(lv.Items[index] is GroupChannel item))
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (null == e.Data)
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
var formats = e.Data.GetFormats();
|
||||
|
||||
foreach (var format in formats)
|
||||
{
|
||||
switch (format)
|
||||
{
|
||||
case DragAndDropPayload.ALT_FORMAT:
|
||||
e.Effects = DragDropEffects.Copy;
|
||||
e.Handled = true;
|
||||
return;
|
||||
case DragAndDropPayload.CTRL_FORMAT:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
case DragAndDropPayload.FORMAT:
|
||||
e.Effects = DragDropEffects.Copy;
|
||||
e.Handled = true;
|
||||
return;
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.FORMAT:
|
||||
e.Effects = DragDropEffects.Copy;
|
||||
e.Handled = true;
|
||||
return;
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.CTRL_FORMAT:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.ALT_FORMAT:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
default:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
|
||||
private static int GetIndex(ListView lv)
|
||||
{
|
||||
for (var i = 0; i < lv.Items.Count; i++)
|
||||
{
|
||||
var item = GetListViewItem(lv, i);
|
||||
if (null == item) { continue; }
|
||||
if (IsMouseOverTarget(item))
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
private static ListViewItem GetListViewItem(ListView lv, int index)
|
||||
{
|
||||
if (lv.ItemContainerGenerator.Status !=
|
||||
System.Windows.Controls.Primitives.GeneratorStatus.ContainersGenerated)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return (ListViewItem)lv.ItemContainerGenerator.ContainerFromIndex(index);
|
||||
}
|
||||
private static bool IsMouseOverTarget(Visual target)
|
||||
{
|
||||
if (null == target) { return false; }
|
||||
// We need to use MouseUtilities to figure out the cursor
|
||||
// coordinates because, during a drag-drop operation, the WPF
|
||||
// mechanisms for getting the coordinates behave strangely.
|
||||
|
||||
var bounds = VisualTreeHelper.GetDescendantBounds(target);
|
||||
var mousePos = MouseUtilities.GetMousePosition(target);
|
||||
var bContained = bounds.Contains(mousePos);
|
||||
return bContained;
|
||||
}
|
||||
|
||||
private void ChannelList_Drop(object sender, DragEventArgs e)
|
||||
{
|
||||
if (!(DataContext is GroupChannelListViewModel vm)) { return; }
|
||||
|
||||
var lv = ChannelListListView;
|
||||
|
||||
var index = GetIndex(lv);
|
||||
if (index < 0)
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (lv.Items.Count <= index)
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
if (null == e.Data)
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
var formats = e.Data.GetFormats();
|
||||
if (((int)e.KeyStates & (int)DragDropKeyStates.AltKey) == (int)DragDropKeyStates.AltKey)
|
||||
{
|
||||
for (var i = 0; i < formats.Length; i++)
|
||||
{
|
||||
formats[i] = $"ALT_{formats[i]}";
|
||||
}
|
||||
}
|
||||
else if (((int)e.KeyStates & (int)DragDropKeyStates.ControlKey) == (int)DragDropKeyStates.ControlKey)
|
||||
{
|
||||
for (var i = 0; i < formats.Length; i++)
|
||||
{
|
||||
formats[i] = $"CTRL_{formats[i]}";
|
||||
}
|
||||
}
|
||||
foreach (var format in formats)
|
||||
{
|
||||
switch (format)
|
||||
{
|
||||
case DragAndDropPayload.FORMAT: //insert sensors on the channels in question
|
||||
vm.DoSensorAssignment((IGroupChannel)ChannelListListView.Items[index], ((DragAndDropPayload)e.Data.GetData(format)).Items);
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.FORMAT: //insert hardware assignments at the channel in question
|
||||
vm.DoHardwareAssignment((IGroupChannel)ChannelListListView.Items[index], (IHardwareChannel[])e.Data.GetData(format));
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DragAndDropPayload.ALT_FORMAT:
|
||||
case DragAndDropPayload.CTRL_FORMAT:
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.CTRL_FORMAT:
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.ALT_FORMAT:
|
||||
default:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
CheckDragAndDropFilterWarning();
|
||||
}
|
||||
private void CheckDragAndDropFilterWarning()
|
||||
{
|
||||
if (!(DataContext is GroupChannelListViewModel viewModel)) { return; }
|
||||
viewModel.NotifyUserIfFiltering();
|
||||
}
|
||||
private void TextBox_DragOver(object sender, DragEventArgs e)
|
||||
{
|
||||
if (null == e.Data)
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
var formats = e.Data.GetFormats();
|
||||
if (((int)e.KeyStates & (int)DragDropKeyStates.AltKey) == (int)DragDropKeyStates.AltKey)
|
||||
{
|
||||
for (var i = 0; i < formats.Length; i++)
|
||||
{
|
||||
formats[i] = $"ALT_{formats[i]}";
|
||||
}
|
||||
}
|
||||
else if (((int)e.KeyStates & (int)DragDropKeyStates.ControlKey) == (int)DragDropKeyStates.ControlKey)
|
||||
{
|
||||
for (var i = 0; i < formats.Length; i++)
|
||||
{
|
||||
formats[i] = $"CTRL_{formats[i]}";
|
||||
}
|
||||
}
|
||||
foreach (var format in formats)
|
||||
{
|
||||
switch (format)
|
||||
{
|
||||
case DragAndDropPayload.ALT_FORMAT:
|
||||
e.Effects = DragDropEffects.Copy;
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DragAndDropPayload.CTRL_FORMAT:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DragAndDropPayload.FORMAT: //insert sensors on the channels in question
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.FORMAT: //insert hardware assignments at the channel in question
|
||||
//DoHardwareAssignment(index, e.Data.GetData(format) as IHardwareChannel[]);
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.CTRL_FORMAT:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.ALT_FORMAT:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
break;
|
||||
default:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void TextBox_Drop(object sender, DragEventArgs e)
|
||||
{
|
||||
if (null == e.Data)
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
IGroupChannel groupChannel = null;
|
||||
if (sender is Control control)
|
||||
{
|
||||
groupChannel = (IGroupChannel)control.DataContext;
|
||||
}
|
||||
else if (sender is TextBlock textBlock)
|
||||
{
|
||||
groupChannel = (IGroupChannel)textBlock.DataContext;
|
||||
}
|
||||
else
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(DataContext is GroupChannelListViewModel vm))
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (null == groupChannel)
|
||||
{
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
var formats = e.Data.GetFormats();
|
||||
if (((int)e.KeyStates & (int)DragDropKeyStates.AltKey) == (int)DragDropKeyStates.AltKey)
|
||||
{
|
||||
for (var i = 0; i < formats.Length; i++)
|
||||
{
|
||||
formats[i] = $"ALT_{formats[i]}";
|
||||
}
|
||||
}
|
||||
else if (((int)e.KeyStates & (int)DragDropKeyStates.ControlKey) == (int)DragDropKeyStates.ControlKey)
|
||||
{
|
||||
for (var i = 0; i < formats.Length; i++)
|
||||
{
|
||||
formats[i] = $"CTRL_{formats[i]}";
|
||||
}
|
||||
}
|
||||
foreach (var format in formats)
|
||||
{
|
||||
switch (format)
|
||||
{
|
||||
case DragAndDropPayload.ALT_FORMAT:
|
||||
e.Effects = DragDropEffects.Copy;
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DragAndDropPayload.CTRL_FORMAT:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DragAndDropPayload.FORMAT: //insert sensors on the channels in question
|
||||
var payload = (DragAndDropPayload)e.Data.GetData(format);
|
||||
vm.DoSensorAssignment(groupChannel, payload.Items);
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.FORMAT: //insert hardware assignments at the channel in question
|
||||
vm.DoHardwareAssignment(groupChannel, e.Data.GetData(format) as IHardwareChannel[]);
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.CTRL_FORMAT:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
break;
|
||||
case DTS.Common.Classes.Hardware.DragAndDropPayload.ALT_FORMAT:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
break;
|
||||
default:
|
||||
e.Effects = DragDropEffects.None;
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
CheckDragAndDropFilterWarning();
|
||||
}
|
||||
|
||||
private void MoveBottom_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(sender is Control control)) { return; }
|
||||
if (!(DataContext is IGroupChannelListViewModel vm)) { return; }
|
||||
if (!(control.DataContext is IGroupChannel channel)) { return; }
|
||||
|
||||
var items = ChannelListListView.SelectedItems;
|
||||
if (items.Count > 1 && items.Contains(channel))
|
||||
{
|
||||
IGroupChannel[] groupChannels = GetSelectedChannelsOrdered();
|
||||
vm.MoveBottom(groupChannels);
|
||||
}
|
||||
else
|
||||
{
|
||||
vm.MoveBottom(new[] { channel });
|
||||
}
|
||||
}
|
||||
|
||||
private void MoveDown_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(sender is Control control)) { return; }
|
||||
if (!(DataContext is IGroupChannelListViewModel vm)) { return; }
|
||||
if (!(control.DataContext is IGroupChannel channel)) { return; }
|
||||
var items = ChannelListListView.SelectedItems;
|
||||
if (items.Count > 1 && items.Contains(channel))
|
||||
{
|
||||
IGroupChannel[] groupChannels = GetSelectedChannelsOrdered();
|
||||
vm.MoveDown(groupChannels);
|
||||
}
|
||||
else
|
||||
{
|
||||
vm.MoveDown(new[] { channel });
|
||||
}
|
||||
}
|
||||
|
||||
private void MoveUp_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(sender is Control control)) { return; }
|
||||
if (!(DataContext is IGroupChannelListViewModel vm)) { return; }
|
||||
if (!(control.DataContext is IGroupChannel channel)) { return; }
|
||||
var items = ChannelListListView.SelectedItems;
|
||||
if (items.Count > 1 && items.Contains(channel))
|
||||
{
|
||||
IGroupChannel[] groupChannels = GetSelectedChannelsOrdered();
|
||||
vm.MoveUp(groupChannels);
|
||||
}
|
||||
else
|
||||
{
|
||||
vm.MoveUp(new[] { channel });
|
||||
}
|
||||
}
|
||||
|
||||
private IGroupChannel[] GetSelectedChannelsOrdered()
|
||||
{
|
||||
var list = new List<IGroupChannel>();
|
||||
foreach (var item in ChannelListListView.SelectedItems)
|
||||
{
|
||||
if (item is IGroupChannel channel)
|
||||
{
|
||||
list.Add(channel);
|
||||
}
|
||||
}
|
||||
|
||||
list.Sort((a, b) =>
|
||||
{
|
||||
return ChannelListListView.Items.IndexOf(a).CompareTo(ChannelListListView.Items.IndexOf(b));
|
||||
});
|
||||
return list.ToArray();
|
||||
}
|
||||
private void MoveTop_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(sender is Control control)) { return; }
|
||||
if (!(DataContext is IGroupChannelListViewModel vm)) { return; }
|
||||
if (!(control.DataContext is IGroupChannel channel)) { return; }
|
||||
|
||||
var items = ChannelListListView.SelectedItems;
|
||||
if (items.Count > 1 && items.Contains(channel))
|
||||
{
|
||||
IGroupChannel[] groupChannels = GetSelectedChannelsOrdered();
|
||||
vm.MoveTop(groupChannels);
|
||||
}
|
||||
else
|
||||
{
|
||||
vm.MoveTop(new[] { channel });
|
||||
}
|
||||
}
|
||||
|
||||
private void ChannelCodeBuilder_OnChannelCodeSelected(object sender, string code, string name, ChannelEnumsAndConstants.ChannelCodeType codeType)
|
||||
{
|
||||
if (!(DataContext is GroupChannelListViewModel viewModel)) { return; }
|
||||
|
||||
if (!(sender is Control control)) { return; }
|
||||
|
||||
if (!(control.DataContext is IGroupChannel channel)) { return; }
|
||||
|
||||
if (codeType == ChannelEnumsAndConstants.ChannelCodeType.ISO)
|
||||
{
|
||||
channel.IsoCode = code;
|
||||
if (string.IsNullOrWhiteSpace(channel.IsoChannelName))
|
||||
{
|
||||
channel.IsoChannelName = name;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
channel.UserCode = code;
|
||||
if (string.IsNullOrWhiteSpace(channel.UserChannelName))
|
||||
{
|
||||
channel.UserChannelName = name;
|
||||
}
|
||||
}
|
||||
viewModel.MarkModified(channel);
|
||||
}
|
||||
/// <summary>
|
||||
/// Sets channel code/name when the user clicks on a selection from the popup window
|
||||
/// 17565 - Predictive text on "ISO channel name" column when in test set up / groups to make
|
||||
/// </summary
|
||||
private void ChannelNameBuilder_OnChannelCodeSelected(object sender, string code, string name, ChannelEnumsAndConstants.ChannelCodeType codeType)
|
||||
{
|
||||
if (!(DataContext is GroupChannelListViewModel viewModel)) { return; }
|
||||
|
||||
if (!(sender is Control control)) { return; }
|
||||
|
||||
if (!(control.DataContext is IGroupChannel channel)) { return; }
|
||||
|
||||
if (codeType == ChannelEnumsAndConstants.ChannelCodeType.ISO)
|
||||
{
|
||||
channel.IsoChannelName = name;
|
||||
channel.IsoCode = code;
|
||||
}
|
||||
else
|
||||
{
|
||||
channel.UserChannelName = name;
|
||||
channel.UserCode = code;
|
||||
}
|
||||
viewModel.MarkModified(channel);
|
||||
}
|
||||
private void TextBoxSourceUpdated(object sender, System.Windows.Data.DataTransferEventArgs e)
|
||||
{
|
||||
//this is slightly complicated, when the group name changes:
|
||||
//1) remove this channel from the channel list for the old group
|
||||
//2) remove the old group if it's now empty
|
||||
//3) add a new group if one doesn't exist
|
||||
//4) add the channel to the group
|
||||
if (!(DataContext is GroupChannelListViewModel vm))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(((Control)sender).DataContext is IGroupChannel groupChannel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
vm.GroupNameChanged(groupChannel);
|
||||
vm.MarkModified(groupChannel);
|
||||
}
|
||||
|
||||
private void ChannelListListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void ListView_KeyUp(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (ChannelListListView.SelectedItems.Count <= 0) { return; }
|
||||
|
||||
if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt))
|
||||
{
|
||||
switch (e.Key)
|
||||
{
|
||||
case Key.System:
|
||||
if (e.SystemKey == Key.Up) { Move(true); }
|
||||
else if (e.SystemKey == Key.Down) { Move(false); }
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (Keyboard.IsKeyDown(Key.Up) && e.Key == Key.LeftAlt)
|
||||
{
|
||||
Move(true);
|
||||
}
|
||||
else if (Keyboard.IsKeyDown(Key.Up) && e.Key == Key.RightAlt)
|
||||
{
|
||||
Move(true);
|
||||
}
|
||||
else if (Keyboard.IsKeyDown(Key.Down) && e.Key == Key.LeftAlt)
|
||||
{
|
||||
Move(false);
|
||||
}
|
||||
else if (Keyboard.IsKeyDown(Key.Down) && e.Key == Key.RightAlt)
|
||||
{
|
||||
Move(false);
|
||||
}
|
||||
}
|
||||
private void Move(bool bUp)
|
||||
{
|
||||
if (!(DataContext is GroupChannelListViewModel vm))
|
||||
{
|
||||
return;
|
||||
}
|
||||
var list = new List<IGroupChannel>();
|
||||
foreach (var item in ChannelListListView.SelectedItems)
|
||||
{
|
||||
if (!(item is IGroupChannel groupChannel))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
list.Add(groupChannel);
|
||||
}
|
||||
if (bUp)
|
||||
{
|
||||
vm.MoveUp(list.ToArray());
|
||||
}
|
||||
else
|
||||
{
|
||||
vm.MoveDown(list.ToArray());
|
||||
}
|
||||
}
|
||||
|
||||
private void ISOCode_LostFocus(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(DataContext is GroupChannelListViewModel viewModel)) { return; }
|
||||
|
||||
if (!(sender is Control control)) { return; }
|
||||
|
||||
if (!(control.DataContext is IGroupChannel channel)) { return; }
|
||||
if (viewModel.UseISOCodeFilterMapping)
|
||||
{
|
||||
//FB 15523 passes available filters
|
||||
var filters = DTS.SensorDB.SoftwareFilter.GetSoftwareFilters();
|
||||
//FB 15574 FB 13120
|
||||
channel.FilterClass = channel.GetFilterClassFromISOCode(filters, channel.IsoCode);
|
||||
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// handles hyperlink clicks, specifically for a sensor
|
||||
/// 15125 Navigate to selected sensor from run test diagnostics
|
||||
/// </summary>
|
||||
private void Hyperlink_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!(DataContext is GroupChannelListViewModel vm)) { return; }
|
||||
if (!(sender is Hyperlink hl)) { return; }
|
||||
if (!(hl.DataContext is GroupChannel groupChannel)) { return; }
|
||||
var eventAggregator = ContainerLocator.Container.Resolve<IEventAggregator>();
|
||||
eventAggregator.GetEvent<PageNavigationRequestEvent>().Publish(new PageNavigationRequest(
|
||||
PageNavigationRequest.Destinations.Sensor,
|
||||
groupChannel,
|
||||
vm));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,913 @@
|
||||
<base:BaseView x:Class="GroupChannelList.GroupChannelSettingsListView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:base="clr-namespace:DTS.Common.Base;assembly=DTS.Common"
|
||||
xmlns:controls="clr-namespace:DTS.Common.Controls;assembly=DTS.Common"
|
||||
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
||||
xmlns:strings="clr-namespace:GroupChannelList"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="300" d:DesignWidth="500"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:converters="clr-namespace:GroupChannelList.Converters"
|
||||
xmlns:converters1="clr-namespace:DTS.Common.Converters;assembly=DTS.Common"
|
||||
xmlns:cc="clr-namespace:ChannelCodes.Model;assembly=ChannelCodes"
|
||||
xmlns:behaviors="clr-namespace:DTS.Common.Behaviors;assembly=DTS.Common"
|
||||
xmlns:sensors="clr-namespace:DTS.Common.Enums.Sensors;assembly=DTS.Common"
|
||||
xmlns:system="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:validators="clr-namespace:DTS.Common.Validators;assembly=DTS.Common"
|
||||
xmlns:constants="clr-namespace:DTS.Common.Constant;assembly=DTS.Common"
|
||||
x:Name="ChannelListView">
|
||||
<base:BaseView.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Themes/CommonStyles.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Controls/combobox.xaml"/>
|
||||
<ResourceDictionary Source="pack://application:,,,/DTS.Common;component/Constant/XamlConstants.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
<Style TargetType="RadioButton" BasedOn="{StaticResource FlatRadioButtonStyle}" >
|
||||
<Setter Property="Height" Value="24" />
|
||||
<Setter Property="Margin" Value="5" />
|
||||
</Style>
|
||||
<Style TargetType="ListView">
|
||||
<Setter Property="ItemContainerStyle" Value="{StaticResource TTS_ListViewItemStyle}"/>
|
||||
</Style>
|
||||
<Style TargetType="TextBox" BasedOn="{StaticResource TTS_TextBoxStyle}"/>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource TTS_TextBlockStyle}"/>
|
||||
<Style TargetType="CheckBox" BasedOn="{StaticResource PageContentCheckBoxStyle}" />
|
||||
<Style TargetType="ComboBox" BasedOn="{StaticResource TTS_ComboBoxStyle}">
|
||||
<Setter Property="Height" Value="20"/>
|
||||
</Style>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource TTS_ButtonStyle}"/>
|
||||
<Style TargetType="GridViewColumnHeader" BasedOn="{StaticResource Gray_GridViewColumnHeaderStyle}"/>
|
||||
<Style TargetType="{x:Type xctk:DoubleUpDown}" BasedOn="{StaticResource PageContentXCDoubleUpDown}" />
|
||||
<converters:SensorIdBackgroundConverter x:Key="BackgroundConverter" />
|
||||
<converters1:NumericStringFormatConverter x:Key="NumericStringFormatConverter" />
|
||||
<!--<BooleanToVisibilityConverter x:Key="BoolToVisConverter"/>-->
|
||||
<converters1:BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
|
||||
<converters1:InverseBooleanToVisibilityConverter x:Key="InverseBoolToVisConverter" />
|
||||
<converters:BooleanToWidthConverter x:Key="BooleanToWidthConverter" />
|
||||
<converters1:EnumVisibilityConverter x:Key="EnumVisibilityConverter" />
|
||||
<converters1:InverseEnumVisibilityConverter x:Key="InverseEnumVisibilityConverter" />
|
||||
<converters1:BooleanToBorderBrushConverter x:Key="BooleanToBorderBrushConverter" />
|
||||
<converters1:InverseBooleanConverter x:Key="InverseBoolConverter" />
|
||||
<system:String x:Key="CapacityFormat">{0:N2}</system:String>
|
||||
<converters1:GreaterEqualThanToBoolConverter x:Key="GreaterThanConverter" />
|
||||
<system:UInt16 x:Key="IntervalOnBound">1</system:UInt16>
|
||||
<converters1:IntervalToVisibilityConverter x:Key="InterveralToVisConverter" />
|
||||
<converters1:BooleanOrMultiConverter x:Key="BooleanOrMultiConverter" />
|
||||
</ResourceDictionary>
|
||||
</base:BaseView.Resources>
|
||||
<Grid Background="{DynamicResource Brush_ApplicationContentBackground}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<WrapPanel Grid.Row="0" Orientation="Horizontal">
|
||||
<RadioButton Content="{strings:TranslateExtension Parameters_Analog}" x:Name="rbParametersAnalog" Click="Analog_Click" />
|
||||
<RadioButton Content="{strings:TranslateExtension Parameters_Squib}" x:Name="rbParametersSquib" Click="Squib_Click" />
|
||||
<RadioButton Content="{strings:TranslateExtension Parameters_DigitalOut}" x:Name="rbParametersDigitalOut" Click="DigitalOut_Click" />
|
||||
<RadioButton Content="{strings:TranslateExtension Parameters_DigitalIn}" x:Name="rbParametersDigitalIn" Click="DigitalIn_Click" />
|
||||
<RadioButton Content="{strings:TranslateExtension Parameters_Uart}" x:Name="rbParametersUart" Click="Uart_Click" />
|
||||
<RadioButton Content="{strings:TranslateExtension Parameters_StreamOut}" x:Name="rbParametersStreamOut" Click="StreamOut_Click" />
|
||||
<RadioButton Content="{strings:TranslateExtension Parameters_StreamIn}" x:Name="rbParametersStreamIn" Click="StreamIn_Click" />
|
||||
<RadioButton Content="{strings:TranslateExtension Parameters_CAN}" x:Name="rbParametersCAN" Click="CAN_Click" />
|
||||
<StackPanel Orientation="Horizontal" Visibility="{Binding ElementName=ChannelListView, Path=GCAC_Visibility, Converter={StaticResource BoolToVisConverter}}" Margin="15,0,0,0">
|
||||
<ToggleButton Content="{strings:TranslateExtension ModifyGlobalRangeCAC}" MinWidth="200"
|
||||
x:Name="btnModifyGlobalRangeCAC" IsEnabled="{Binding ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}}"/>
|
||||
<StackPanel Margin="15,0,0,0" Orientation="Horizontal" Visibility="{Binding IsChecked,ElementName=btnModifyGlobalRangeCAC, Converter={StaticResource BoolToVisConverter}}">
|
||||
<TextBlock Text="{strings:TranslateExtension GlobalRangeCAC}" />
|
||||
<ComboBox SelectedItem="{Binding ElementName=ChannelListView, Path=SelectedGlobalRangeCACOption}" Grid.Column="1" MinWidth="300" HorizontalAlignment="Left"
|
||||
HorizontalContentAlignment="Right" ItemsSource="{Binding ElementName=ChannelListView, Path=GlobalCACOptions}" x:Name="cbGlobalRangeCAC"
|
||||
IsEnabled="{Binding ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}}" AutomationProperties.AutomationId="cb_GlobalRangeCAC"
|
||||
/>
|
||||
<Button Content="{strings:TranslateExtension btnApplyGlobalRangeCAC}" x:Name="btnGlobalRangeApply" Click="btnGlobalRangeApply_Click"
|
||||
IsEnabled="{Binding ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}}"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
</WrapPanel>
|
||||
<!--<ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">-->
|
||||
<ListView Grid.Row="1" ItemsSource="{Binding SettingChannels}" AutomationProperties.AutomationId="Parameters" VirtualizingStackPanel.IsVirtualizing="True"
|
||||
x:Name="ChannelSettingsListListView" GridViewColumnHeader.Click="GridViewColumnHeader_Click" Loaded="ChannelSettingsListListView_OnLoaded">
|
||||
<ListView.View><!-- -->
|
||||
<controls:AutoSizedGridView AutomationProperties.AutomationId="CustomChannelsListGridView">
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="GroupOrderColumn" x:Name="GroupOrderColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="Order" HeaderTitle="{strings:TranslateExtension Order}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding GroupChannelOrder,FallbackValue='-1',StringFormat={}000}" VerticalAlignment="Center" AutomationProperties.AutomationId="ChannelOrderTextBlock"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="TestSetupOrderColumn" x:Name="TestSetupOrderColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="Order" HeaderTitle="{strings:TranslateExtension Order}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding TestSetupOrder,FallbackValue='-1',StringFormat={}000}" VerticalAlignment="Center" AutomationProperties.AutomationId="ChannelOrderTextBlock"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="GroupColumn" x:Name="GroupColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="GroupName" HeaderTitle="{strings:TranslateExtension Group}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock AutomationProperties.AutomationId="GroupNameTextBlock" MinWidth="200" Tag="GroupName" Text="{Binding GroupName}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="UserCodeColumn" x:Name="UserCodeColumn" Width="{Binding ShowUserCodes, Converter={StaticResource BooleanToWidthConverter}}">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UserCode" HeaderTitle="{strings:TranslateExtension UserCode}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock MinWidth="200" AutomationProperties.AutomationId="UserCodeTextBlock" Tag="UserCode" Text="{Binding UserCode}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="UserChannelNameColumn" x:Name="UserChannelNameColumn"
|
||||
Width="{Binding ShowUserCodes, Converter={StaticResource BooleanToWidthConverter}}">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UserChannelName" HeaderTitle="{strings:TranslateExtension UserChannelName}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding UserChannelName}" AutomationProperties.AutomationId="UserChannelNameTextBlock" MinWidth="200" Tag="UserChannelName"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="ChannelNameColumn" x:Name="ChannelNameColumn"
|
||||
Width="{Binding ChannelNamesOnly, Converter={StaticResource BooleanToWidthConverter}}">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UserChannelName" HeaderTitle="{strings:TranslateExtension ChannelName}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding UserChannelName}" AutomationProperties.AutomationId="ChannelNameTextBlock" MinWidth="200" Tag="UserChannelName"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="ISOCodeColumn" x:Name="ISOCodeColumn"
|
||||
Width="{Binding ShowISOCodes, Converter={StaticResource BooleanToWidthConverter}}">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="ISOCode" HeaderTitle="{strings:TranslateExtension ISOCode}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding IsoCode}" MinWidth="200" AutomationProperties.AutomationId="ISOCodeTextBlock" Tag="ISOCode"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="ISOChannelNameColumn" x:Name="ISOChannelNameColumn"
|
||||
Width="{Binding ShowISOCodes, Converter={StaticResource BooleanToWidthConverter}}">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="ISOChannelName" HeaderTitle="{strings:TranslateExtension ISOChannelName}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock Text="{Binding IsoChannelName}" AutomationProperties.AutomationId="ISOChannelNameTextBlock" MinWidth="200" Tag="ISOChannelName"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="SensorColumn" >
|
||||
<controls:GridViewColumnHeaderSearchable Tag="Sensor" HeaderTitle="{strings:TranslateExtension Sensor}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<Grid IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<Label Visibility="{Binding EmbeddedSensor, Converter={StaticResource InverseBoolToVisConverter}}">
|
||||
<Hyperlink Click="Hyperlink_Click" IsEnabled="{Binding EmbeddedSensor, Converter={StaticResource InverseBoolConverter}}">
|
||||
<TextBlock Text="{Binding Sensor}" AutomationProperties.AutomationId="SensorTextBlock" />
|
||||
</Hyperlink>
|
||||
</Label>
|
||||
<TextBlock Text="{Binding Sensor}" AutomationProperties.AutomationId="SensorTextBlock" Visibility="{Binding EmbeddedSensor, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
</Grid>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="RangeColumn" x:Name="AnalogRangeColumn" >
|
||||
<controls:GridViewColumnHeaderSearchable Tag="Range" HeaderTitle="{strings:TranslateExtension AnalogParameters_Range}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<Grid IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" VerticalAlignment="Center"
|
||||
Visibility="{Binding NonRangeModifiableSensor, Converter={StaticResource BoolToVisConverter}}" />
|
||||
<xctk:DoubleUpDown AutomationProperties.AutomationId="AnalogParameters_Range" Minimum=".1" FormatString="N2" Value="{Binding Range}"
|
||||
Visibility="{Binding EmbeddedSensor, Converter={StaticResource InverseBoolToVisConverter}}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsRangeDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"/>
|
||||
<ComboBox AutomationProperties.AutomationId="AnalogParameters_RangeLowG" HorizontalAlignment="Left"
|
||||
ItemsSource="{Binding ElementName=ChannelListView, Path=AvailableRangesLowG}" SelectedItem="{Binding RangeLowG}"
|
||||
Visibility="{Binding RangeModifiableSensorLowG, Converter={StaticResource BoolToVisConverter}}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsRangeDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
LostFocus="RangeLowG_LostFocus"
|
||||
/>
|
||||
<ComboBox AutomationProperties.AutomationId="AnalogParameters_RangeARS" HorizontalAlignment="Left"
|
||||
ItemsSource="{Binding ElementName=ChannelListView, Path=AvailableRangesARS}" SelectedItem="{Binding Range}"
|
||||
Visibility="{Binding RangeModifiableSensorARS, Converter={StaticResource BoolToVisConverter}}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsRangeDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
LostFocus="RangeARS_LostFocus"/>
|
||||
<xctk:DoubleUpDown AutomationProperties.AutomationId="AnalogParameters_RangeVoltageInsert" Minimum=".1" FormatString="N2" Value="{Binding Range}"
|
||||
Visibility="{Binding VoltageInsertionSensor, Converter={StaticResource BoolToVisConverter}}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsRangeDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"/>
|
||||
</Grid>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="CapacityColumn" x:Name="AnalogCapacityColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="Capacity" HeaderTitle="{strings:TranslateExtension AnalogParameters_Capacity}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<Grid IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<TextBlock Text="{Binding EmbeddedCapacityDisplay}" VerticalAlignment="Center"
|
||||
Visibility="{Binding EmbeddedSensor, Converter={StaticResource BoolToVisConverter}}" />
|
||||
<TextBlock AutomationProperties.AutomationId="AnalogParameters_Capacity" Visibility="{Binding EmbeddedSensor, Converter={StaticResource InverseBoolToVisConverter}}">
|
||||
<TextBlock.Text>
|
||||
<MultiBinding Converter="{StaticResource NumericStringFormatConverter}" FallbackValue="'Capacity'">
|
||||
<Binding Path="Capacity" />
|
||||
<Binding Path="DataContext.CapacityFormat" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type ListView}}"/>
|
||||
</MultiBinding>
|
||||
</TextBlock.Text>
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="SensitivityColumn" x:Name="AnalogSensitivityColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="Sensitivity" HeaderTitle="{strings:TranslateExtension AnalogParameters_Sensitivity}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock AutomationProperties.AutomationId="AnalogParameters _Sensitivity" Text="{Binding Sensitivity}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="UnitsColumn" x:Name="AnalogUnitsColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="Units" HeaderTitle="{strings:TranslateExtension AnalogParameters_Units}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBlock AutomationProperties.AutomationId="AnalogParameters_Units" Text="{Binding Units}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="CFCColumn" x:Name="AnalogCFCColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="FilterClass" HeaderTitle="{strings:TranslateExtension AnalogParameters_CFC}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox AutomationProperties.AutomationId="AnalogParameters_CFC" DisplayMemberPath="FilterName" ItemsSource="{Binding ElementName=ChannelListView, Path=AvailableCFC}"
|
||||
HorizontalAlignment="Left" SelectedItem="{Binding FilterClass}" MinWidth="125"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsFilterClassDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="PolarityColumn" x:Name="AnalogPolarityColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="Polarity" HeaderTitle="{strings:TranslateExtension AnalogParameters_Polarity}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox AutomationProperties.AutomationId="AnalogParameters_Polarity" HorizontalAlignment="Left"
|
||||
ItemsSource="{Binding ElementName=ChannelListView, Path=AvailablePolarity}" SelectedItem="{Binding Polarity}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsPolarityDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
<!--BorderBrush="{Binding PolarityBorderBrushColor}" BorderThickness="2.0"/>-->
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="ZeroMethodColumn" x:Name="AnalogZeroMethodColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="ZeroMethod" HeaderTitle="{strings:TranslateExtension AnalogParameters_ZeroMethod}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<Grid IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<!--FB16269 Show user setting but lock it rather than hide it if NonLinear-->
|
||||
<ComboBox AutomationProperties.AutomationId="AnalogParameters_ZeroMethod" HorizontalAlignment="Left" MinWidth="125"
|
||||
ItemsSource="{Binding ElementName=ChannelListView, Path=AvailableZeroMethodEmbeddedSensor}" SelectedItem="{Binding ZeroMethod}"
|
||||
IsEnabled="{Binding NonLinear, Converter={StaticResource InverseBoolConverter}}"
|
||||
Visibility="{Binding EmbeddedSensor, Converter={StaticResource BoolToVisConverter}}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsZeroMethodDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"/>
|
||||
<ComboBox AutomationProperties.AutomationId="AnalogParameters_ZeroMethod" HorizontalAlignment="Left" MinWidth="125"
|
||||
ItemsSource="{Binding ElementName=ChannelListView, Path=AvailableZeroMethod}" SelectedItem="{Binding ZeroMethod}"
|
||||
IsEnabled="{Binding NonLinearAndNotPolynomial, Converter={StaticResource InverseBoolConverter}}"
|
||||
Visibility="{Binding EmbeddedSensor, Converter={StaticResource InverseBoolToVisConverter}}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsZeroMethodDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"/>
|
||||
</Grid>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="ZeroMethodColumn" x:Name="AnalogZeroMethodStartColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="ZeroMethodStart" HeaderTitle="{strings:TranslateExtension AnalogParameters_ZeroMethodStart}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<Grid IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<TextBlock Text="{strings:TranslateExtension Not_Applicable}" VerticalAlignment="Center"
|
||||
Visibility="{Binding ZeroMethod, Converter={StaticResource InverseEnumVisibilityConverter}, ConverterParameter={x:Static sensors:ZeroMethodType.AverageOverTime}}" />
|
||||
<xctk:DoubleUpDown AutomationProperties.AutomationId="AnalogParameters_ZeroMethodStart"
|
||||
FormatString="F5" Value="{Binding ZeroMethodStart}" Visibility="{Binding ZeroMethod,
|
||||
Converter={StaticResource EnumVisibilityConverter}, ConverterParameter={x:Static sensors:ZeroMethodType.AverageOverTime}}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsZeroMethodStartDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"/>
|
||||
</Grid>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="ZeroMethodColumn" x:Name="AnalogZeroMethodEndColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="ZeroMethodEnd" HeaderTitle="{strings:TranslateExtension AnalogParameters_ZeroMethodEnd}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<Grid IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<TextBlock Text="{strings:TranslateExtension Not_Applicable}" VerticalAlignment="Center"
|
||||
Visibility="{Binding ZeroMethod, Converter={StaticResource InverseEnumVisibilityConverter}, ConverterParameter={x:Static sensors:ZeroMethodType.AverageOverTime}}" />
|
||||
<xctk:DoubleUpDown AutomationProperties.AutomationId="AnalogParameters_ZeroMethodEnd"
|
||||
FormatString="F5" Value="{Binding ZeroMethodEnd}" Visibility="{Binding ZeroMethod,
|
||||
Converter={StaticResource EnumVisibilityConverter}, ConverterParameter={x:Static sensors:ZeroMethodType.AverageOverTime}}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsZeroMethodEndDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"/>
|
||||
</Grid>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="UserValue1Column" x:Name="AnalogUserValue1Column" >
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UserValue1" HeaderTitle="{strings:TranslateExtension AnalogParameters_UserValue1}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBox AutomationProperties.AutomationId="AnalogParameters_UserValue1" Width="90" MaxWidth="90" MinWidth="90" Text="{Binding UserValue1}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="UserValue2Column" x:Name="AnalogUserValue2Column" >
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UserValue2" HeaderTitle="{strings:TranslateExtension AnalogParameters_UserValue2}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBox AutomationProperties.AutomationId="AnalogParameters_UserValue2" Width="90" MaxWidth="90" MinWidth="90" Text="{Binding UserValue2}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="UserValue3Column" x:Name="AnalogUserValue3Column" >
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UserValue3" HeaderTitle="{strings:TranslateExtension AnalogParameters_UserValue3}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBox AutomationProperties.AutomationId="AnalogParameters_UserValue3" Width="90" MaxWidth="90" MinWidth="90" Text="{Binding UserValue3}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="InitialOffsetColumn" x:Name="AnalogInitialOffsetColumn" >
|
||||
<controls:GridViewColumnHeaderSearchable Tag="InitialOffset" HeaderTitle="{strings:TranslateExtension AnalogParameters_InitialOffset}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<Grid IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" VerticalAlignment="Center"
|
||||
Visibility="{Binding EmbeddedSensor, Converter={StaticResource BoolToVisConverter}}" />
|
||||
<ComboBox AutomationProperties.AutomationId="AnalogParameters_InitialOffset" Width="90" MaxWidth="90" MinWidth="90"
|
||||
ItemsSource="{Binding AvailableInitialOffsets}" SelectedItem="{Binding InitialOffset}"
|
||||
Visibility="{Binding EmbeddedSensor, Converter={StaticResource InverseBoolToVisConverter}}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsInitialOffsetDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"/>
|
||||
</Grid>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<!-- http://manuscript.dts.local/f/cases/29760/Implement-ACCoupleEnable-for-TSR-AIR -->
|
||||
<GridViewColumn AutomationProperties.AutomationId="ACCouplingEnable" x:Name="AnalogACCouplingEnableColumn"
|
||||
Header="{strings:Translate AnalogParameter_ACCouplingEnable}">
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<CheckBox AutomationProperties.AutomationId="AnalogParameters_ACCouplingEnable"
|
||||
IsChecked="{Binding ACCouplingEnabled}" Click="ACCouplingEnable_Click"
|
||||
Visibility="{Binding IsTSRAIRLowG, Converter={StaticResource BoolToVisConverter}}" >
|
||||
<CheckBox.IsEnabled>
|
||||
<MultiBinding Converter="{StaticResource BooleanOrMultiConverter}">
|
||||
<Binding Path="ViewDbVersion" ElementName="ChannelListView" Converter="{StaticResource GreaterThanConverter}" ConverterParameter="{StaticResource MIN_DB_VERSION_AC_COUPLING}" />
|
||||
<Binding Path="DataContext.ReadOnlyParametersMode" Converter="{StaticResource InverseBoolConverter}" RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type ListView}}" />
|
||||
</MultiBinding>
|
||||
</CheckBox.IsEnabled>
|
||||
</CheckBox>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="InputModeColumn" x:Name="DigitalInInputModeColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="InputMode" HeaderTitle="{strings:TranslateExtension DigitalInParameters_InputMode}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox AutomationProperties.AutomationId="DigitalInParameters_InputMode" HorizontalAlignment="Left" Width="180"
|
||||
ItemsSource="{Binding ElementName=ChannelListView, Path=AvailableDigitalInputModes}" SelectedItem="{Binding DigitalInputMode}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsDigitalInputModeDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="DefaultValueColumn" x:Name="DigitalInDefaultValueColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="DefaultValue" HeaderTitle="{strings:TranslateExtension DigitalInParameters_DefaultValue}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBox Text="{Binding DefaultValue, Mode=TwoWay}" AutomationProperties.AutomationId="DigitialInParameters_DefaultValue"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsDefaultValueDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="ActiveValueColumn" x:Name="DigitalInActiveValueColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="ActiveValue" HeaderTitle="{strings:TranslateExtension DigitalInParameters_ActiveValue}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBox Text="{Binding ActiveValue, Mode=TwoWay}" AutomationProperties.AutomationId="DigitalInParameters_ActiveValue"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsActiveValueDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="OutputModeColumn" x:Name="DigitalOutOutputModeColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="OutputMode" HeaderTitle="{strings:TranslateExtension DigitalOutParameters_OutputMode}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox HorizontalAlignment="Left" ItemsSource="{Binding ElementName=ChannelListView, Path=AvailableDigitalOutputModes}"
|
||||
SelectedItem="{Binding DigitalOutputMode}" Width="180" AutomationProperties.AutomationId="DigitalOutParameters_OutputMode"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsDigitalOutputModeDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="OutputDelayColumn" x:Name="DigitalOutDelayColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="OutputDelay" HeaderTitle="{strings:TranslateExtension DigitalOutParameters_Delay}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<xctk:DoubleUpDown Value="{Binding DigitalOutDelay}" FormatString="N2" AutomationProperties.AutomationId="DigitalOutParameters_Delay"
|
||||
Minimum="{StaticResource DIGITALOUT_DELAY_MIN}" Increment=".1"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsDigitalOutDelayDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="OutputLimitDurationColumn" x:Name="DigitalOutLimitDurationColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="OutputLimitDuration" HeaderTitle="{strings:TranslateExtension DigitalOutParameters_LimitDuration}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<CheckBox IsChecked="{Binding DigitalOutLimitDuration}" AutomationProperties.AutomationId="DigitalOutParameters_LimitDuration"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsDigitalOutLimitDurationDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="OutputDurationColumn" x:Name="DigitalOutDurationColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="OutputDuration" HeaderTitle="{strings:TranslateExtension DigitalOutParameters_Duration}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<xctk:DoubleUpDown Value="{Binding DigitalOutDuration}" FormatString="N1" AutomationProperties.AutomationId="DigitalOutParameters_Duration"
|
||||
Visibility="{Binding DigitalOutLimitDuration, Converter={StaticResource BoolToVisConverter}}" Increment=".1" Maximum="{Binding DigitalOutDurationMax}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsDigitalOutDurationDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="SquibFireModeColumn" x:Name="SquibFireModeColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="SquibFireMode" HeaderTitle="{strings:TranslateExtension SquibParameters_FireMode}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox AutomationProperties.AutomationId="SquibParameters_FireMode" HorizontalAlignment="Left" Width="150"
|
||||
ItemsSource="{Binding ElementName=ChannelListView,Path=AvailableSquibFireModes}" SelectedItem="{Binding SquibFireMode}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsSquibFireModeDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="SquibDelayColumn" x:Name="SquibDelayColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="SquibDelay" HeaderTitle="{strings:TranslateExtension SquibParameters_Delay}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<xctk:DoubleUpDown Value="{Binding SquibDelay}" FormatString="N2" AutomationProperties.AutomationId="SquibParameters_Delay" Width="100" Increment=".1"
|
||||
Minimum="{StaticResource SQUIB_DELAY_MIN}" Maximum="{StaticResource SQUIB_DELAY_MAX}" Watermark="{strings:TranslateExtension EnterValue}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsSquibDelayDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="SquibLimitDurationColumn" x:Name="SquibLimitDurationColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="SquibLimitDuration" HeaderTitle="{strings:TranslateExtension SquibParameters_LimitDuration}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<CheckBox IsChecked="{Binding SquibLimitDuration}" AutomationProperties.AutomationId="SquibParameters_LimitDuration"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsSquibLimitDurationDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="SquibDurationColumn" x:Name="SquibDurationColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="SquibDuration" HeaderTitle="{strings:TranslateExtension SquibParameters_Duration}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<xctk:DoubleUpDown Value="{Binding SquibDuration}" FormatString="N1" AutomationProperties.AutomationId="SquibParameters_Duration"
|
||||
Minimum="{StaticResource SQUIB_DURATION_MIN}" Maximum="{StaticResource SQUIB_DURATION_MAX}"
|
||||
Visibility="{Binding SquibLimitDuration, Converter={StaticResource BoolToVisConverter}}" Increment=".1"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsSquibDurationDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="SquibCurrentColumn" x:Name="SquibCurrentColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="SquibCurrent" HeaderTitle="{strings:TranslateExtension SquibParameters_Current}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<xctk:DoubleUpDown Value="{Binding SquibCurrent}" FormatString="N2" AutomationProperties.AutomationId="SquibParameters_Current"
|
||||
Minimum="{StaticResource SQUIB_CURRENT_LOW}" Maximum="{StaticResource SQUIB_CURRENT_HIGH}"
|
||||
Visibility="{Binding IsConstantCurrent, Converter={StaticResource BoolToVisConverter}}" Increment=".1"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsSquibCurrentDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="UartBaudRateColumn" x:Name="UartBaudRateColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UartBaudRate" HeaderTitle="{strings:TranslateExtension UartParameters_BaudRate}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox ItemsSource="{x:Static constants:EmbeddedSensors.BAUD_RATES}" BorderThickness="2.0" BorderBrush="{Binding IsUartBaudRateDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"
|
||||
IsEditable="True">
|
||||
<ComboBox.Text>
|
||||
<Binding Path="UartBaudRate" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True" ValidatesOnNotifyDataErrors="True" ValidatesOnExceptions="True">
|
||||
<Binding.ValidationRules>
|
||||
<validators:UARTBAUDRateValidator />
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</ComboBox.Text>
|
||||
</ComboBox>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="UartDataBitsColumn" x:Name="UartDataBitsColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UartDataBits" HeaderTitle="{strings:TranslateExtension UartParameters_DataBits}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<xctk:DoubleUpDown Value="{Binding UartDataBits}" FormatString="N0" AutomationProperties.AutomationId="UartParameters_DataBits"
|
||||
ClipValueToMinMax="True" Increment="1" Minimum="{StaticResource UART_DATA_BITS_MIN}" Maximum="{StaticResource UART_DATA_BITS_MAX}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsUartDataBitsDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="UartStopBitsColumn" x:Name="UartStopBitsColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UartStopBits" HeaderTitle="{strings:TranslateExtension UartParameters_StopBits}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox AutomationProperties.AutomationId="UartParameters_StopBits" HorizontalAlignment="Left" Width="150"
|
||||
ItemsSource="{Binding ElementName=ChannelListView,Path=AvailableUartStopBits}" SelectedItem="{Binding UartStopBits}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsUartStopBitsDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="UartParityColumn" x:Name="UartParityColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UartParity" HeaderTitle="{strings:TranslateExtension UartParameters_Parity}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox AutomationProperties.AutomationId="UartParameters_Parity" HorizontalAlignment="Left" Width="150"
|
||||
ItemsSource="{Binding ElementName=ChannelListView,Path=AvailableUartParities}" SelectedItem="{Binding UartParity}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsUartParityDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<!--FB 30486 Remove option from UI-->
|
||||
<GridViewColumn AutomationProperties.AutomationId="UartDataFormatColumn" x:Name="UartDataFormatColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="UartDataFormat" HeaderTitle="{strings:TranslateExtension UartParameters_DataFormat}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox AutomationProperties.AutomationId="UartParameters_DataFormat" HorizontalAlignment="Left" Width="150"
|
||||
ItemsSource="{Binding ElementName=ChannelListView,Path=AvailableUartDataFormats}" SelectedItem="{Binding UartDataFormat}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsUartDataFormatDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamInUDPAddressColumn" x:Name="StreamInUDPAddressColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamInUDPAddress" HeaderTitle="{strings:TranslateExtension StreamInParameters_UDPAddress}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<TextBox Text="{Binding StreamInUDPAddress, Mode=TwoWay}" AutomationProperties.AutomationId="StreamInParameters_UDPAddress"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsStreamInUDPAddressDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutUDPProfileColumn" x:Name="StreamOutUDPProfileColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutUDPProfile" HeaderTitle="{strings:TranslateExtension StreamOutParameters_StreamProfile}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox AutomationProperties.AutomationId="StreamOutParameters_StreamProfile" HorizontalAlignment="Left" MinWidth="180" Width="Auto"
|
||||
ItemsSource="{Binding ElementName=ChannelListView,Path=AvailableStreamOutUDPProfiles}" SelectedItem="{Binding StreamOutUDPProfile}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsStreamOutUDPProfileDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutUDPAddressColumn" x:Name="StreamOutUDPAddressColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutUDPAddress" HeaderTitle="{strings:TranslateExtension StreamOutParameters_UDPAddress}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<TextBox Text="{Binding StreamOutUDPAddress, Mode=TwoWay}" AutomationProperties.AutomationId="StreamOutParameters_UDPAddress"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsStreamOutUDPAddressDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
Visibility="{Binding IsUARTStream, Converter={StaticResource InverseBoolToVisConverter}}"/>
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" Visibility="{Binding IsUARTStream, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutUDPTimeChannelIdColumn" x:Name="StreamOutUDPTimeChannelIdColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutUDPTimeChannelId" HeaderTitle="{strings:TranslateExtension StreamOutParameters_TimeChannelId}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<xctk:DoubleUpDown Value="{Binding StreamOutUDPTimeChannelId}" FormatString="N0" AutomationProperties.AutomationId="StreamOutParameters_TimeChannelId"
|
||||
ClipValueToMinMax="True" Increment="1" Minimum="{StaticResource STREAMOUT_TIMECHANNELID_MIN}" Maximum="{StaticResource STREAMOUT_TIMECHANNELID_MAX}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsStreamOutUDPTimeChannelIdDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
Visibility="{Binding IsCH10, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" Visibility="{Binding IsCH10, Converter={StaticResource InverseBoolToVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutUDPDataChannelIdColumn" x:Name="StreamOutUDPDataChannelIdColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutUDPDataChannelId" HeaderTitle="{strings:TranslateExtension StreamOutParameters_DataChannelId}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<xctk:DoubleUpDown Value="{Binding StreamOutUDPDataChannelId}" FormatString="N0" AutomationProperties.AutomationId="StreamOutParameters_DataChannelId"
|
||||
ClipValueToMinMax="True" Increment="1" Minimum="{StaticResource STREAMOUT_DATACHANNELID_MIN}" Maximum="{StaticResource STREAMOUT_DATACHANNELID_MAX}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsStreamOutUDPDataChannelIdDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}">
|
||||
<xctk:DoubleUpDown.Visibility>
|
||||
<MultiBinding Converter="{StaticResource BooleanOrToVisibilityMultiConverter}">
|
||||
<Binding Path="IsCH10" />
|
||||
<Binding Path="IsUARTStream" />
|
||||
</MultiBinding>
|
||||
</xctk:DoubleUpDown.Visibility>
|
||||
</xctk:DoubleUpDown>
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}">
|
||||
<TextBlock.Visibility>
|
||||
<MultiBinding Converter="{StaticResource BooleanOrToVisibilityMultiConverter}" ConverterParameter="False">
|
||||
<Binding Path="IsCH10" />
|
||||
<Binding Path="IsUARTStream" />
|
||||
</MultiBinding>
|
||||
</TextBlock.Visibility>
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutIRIGTimeDataPacketIntervalMsColumn" x:Name="StreamOutIRIGTimeDataPacketIntervalMsColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutIRIGTimeDataPacketIntervalMs" HeaderTitle="{strings:TranslateExtension StreamOutParameters_IRIGTimeDataPacketIntervalMs}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<StackPanel Orientation="Horizontal" Visibility="{Binding IsCH10, Converter={StaticResource BoolToVisConverter}}">
|
||||
<CheckBox Content="{strings:TranslateExtension IntervalOn}" IsChecked="{Binding StreamOutIRIGTimeDataPacketIntervalMs, Converter={StaticResource GreaterThanConverter}, ConverterParameter={StaticResource IntervalOnBound}, Mode=OneWay}"
|
||||
Click="TimePacketIntervalOn_Click"
|
||||
/>
|
||||
<xctk:DoubleUpDown Value="{Binding StreamOutIRIGTimeDataPacketIntervalMs}" FormatString="N0" AutomationProperties.AutomationId="StreamOutParameters_DataChannelId"
|
||||
ClipValueToMinMax="True" Increment="1" Minimum="{StaticResource STREAMOUT_IRIG_TDP_MIN}" Maximum="{StaticResource STREAMOUT_IRIG_TDP_MAX}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsStreamOutIRIGTimeDataPacketIntervalMsDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
Visibility="{Binding StreamOutIRIGTimeDataPacketIntervalMs, Converter={StaticResource InterveralToVisConverter}, ConverterParameter={StaticResource IntervalOnBound}}"
|
||||
/>
|
||||
</StackPanel>
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" Visibility="{Binding IsCH10, Converter={StaticResource InverseBoolToVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutTMATSIntervalMsColumn" x:Name="StreamOutTMATSIntervalMsColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutTMATSIntervalMs" HeaderTitle="{strings:TranslateExtension StreamOutParameters_TMATSIntervalMs}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<StackPanel Orientation="Horizontal" Visibility="{Binding IsIENA, Converter={StaticResource InverseBoolToVisConverter}}"
|
||||
IsEnabled="{Binding ElementName=ChannelListView, Path=DbVersion, Converter={StaticResource GreaterThanConverter}, ConverterParameter={StaticResource TMATSIntervalDbVesion}}">
|
||||
<CheckBox Content="{strings:TranslateExtension IntervalOn}" IsChecked="{Binding StreamOutTMATSIntervalMs, Converter={StaticResource GreaterThanConverter},ConverterParameter={StaticResource IntervalOnBound},Mode=OneWay}"
|
||||
Click="TMATSIntervalON_Click"
|
||||
/>
|
||||
<xctk:DoubleUpDown Value="{Binding StreamOutTMATSIntervalMs}" FormatString="N0" AutomationProperties.AutomationId="StreamOutParameters_TMATSIntervalMs"
|
||||
ClipValueToMinMax="True" Increment="1" Minimum="{StaticResource STREAMOUT_TMAT_INTERVAL_MIN}" Maximum="{StaticResource STREAMOUT_TMAT_INTERVAL_MAX}"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsStreamOutTMATSIntervalMsDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
Visibility="{Binding StreamOutTMATSIntervalMs, Converter={StaticResource InterveralToVisConverter}, ConverterParameter={StaticResource IntervalOnBound}}"
|
||||
/>
|
||||
</StackPanel>
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" Visibility="{Binding IsIENA, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<!-- TMNS Columns -->
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutSubFrameIDColumn" x:Name="StreamOutSubFrameIDColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutSubFrameIdColumn" HeaderTitle="{strings:TranslateExtension StreamOutParameters_TMNS_SubFrameId}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<xctk:DoubleUpDown Value="{Binding TMNS_SubFrameId}" FormatString="N0" AutomationProperties.AutomationId="StreamOutParameters_TMNS_SubFrameId"
|
||||
ClipValueToMinMax="True" Increment="1" Minimum="0" Maximum="65535"
|
||||
BorderThickness="2.0" Visibility="{Binding IsTMNS,Converter={StaticResource BoolToVisConverter}}"/>
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" Visibility="{Binding IsTMNS, Converter={StaticResource InverseBoolToVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutMessageIDColumn" x:Name="StreamOutMessageIDColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutMessageIdColumn" HeaderTitle="{strings:TranslateExtension StreamOutParameters_TMNS_MessageId}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<xctk:DoubleUpDown Value="{Binding TMNS_MsgId}" FormatString="N0" AutomationProperties.AutomationId="StreamOutParameters_TMNS_MessageId"
|
||||
ClipValueToMinMax="True" Increment="1" Minimum="0" Maximum="65535"
|
||||
BorderThickness="2.0" Visibility="{Binding IsTMNS, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" Visibility="{Binding IsTMNS, Converter={StaticResource InverseBoolToVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutMinorPerMajorColumn" x:Name="StreamOutMinorPerMajorColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutMinorPerMajorColumn" HeaderTitle="{strings:TranslateExtension StreamOutParameters_TMNS_MinorPerMajor}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<xctk:DoubleUpDown Value="{Binding TMNS_MinorPerMajor}" FormatString="N0" AutomationProperties.AutomationId="StreamOutParameters_TMNS_MinorPerMajor"
|
||||
ClipValueToMinMax="True" Increment="1" Minimum="0" Maximum="65535"
|
||||
BorderThickness="2.0" Visibility="{Binding IsTMNS, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" Visibility="{Binding IsTMNS, Converter={StaticResource InverseBoolToVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutTMATSPortColumn" x:Name="StreamOutTMATSPortColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutTMATSPortColumn" HeaderTitle="{strings:TranslateExtension StreamOutParameters_TMNS_TMATSPort}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<xctk:DoubleUpDown Value="{Binding TMNS_TMATSPort}" FormatString="N0" AutomationProperties.AutomationId="StreamOutParameters_TMNS_TMATSPort"
|
||||
ClipValueToMinMax="True" Increment="1" Minimum="0" Maximum="65535"
|
||||
BorderThickness="2.0" Visibility="{Binding IsTMNS, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" Visibility="{Binding IsTMNS, Converter={StaticResource InverseBoolToVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
<!-- IENA columns -->
|
||||
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutIENASourcePortColumn" x:Name="StreamOutIENASourcePortColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutIENASourcePortColumn" HeaderTitle="{strings:TranslateExtension StreamOutParameters_IENA_SourcePort}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<xctk:DoubleUpDown Value="{Binding IENA_SourcePort}" FormatString="N0" AutomationProperties.AutomationId="StreamOutParameters_IENA_SourcePort"
|
||||
ClipValueToMinMax="True" Increment="1" Minimum="0" Maximum="65535"
|
||||
BorderThickness="2.0" Visibility="{Binding IsIENA, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" Visibility="{Binding IsIENA, Converter={StaticResource InverseBoolToVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="StreamOutIENAKeyColumn" x:Name="StreamOutIENAKeyColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="StreamOutIENAKeyColumn" HeaderTitle="{strings:TranslateExtension StreamOutParameters_IENA_Key}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<StackPanel IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
|
||||
<xctk:DoubleUpDown Value="{Binding IENA_Key}" FormatString="N0" AutomationProperties.AutomationId="StreamOutParameters_IENA_Key"
|
||||
ClipValueToMinMax="True" Increment="1" Minimum="0" Maximum="65535"
|
||||
BorderThickness="2.0" Visibility="{Binding IsIENA, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
<TextBlock Text="{strings:TranslateExtension Table_NA}" Visibility="{Binding IsIENA, Converter={StaticResource InverseBoolToVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="CanIsFDColumn" x:Name="CanIsFDColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="CanIsFD" HeaderTitle="{strings:TranslateExtension CanParameters_IsFD}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<CheckBox IsChecked="{Binding CanIsFD}" AutomationProperties.AutomationId="CanIsFDColumn"
|
||||
BorderThickness="2.0" BorderBrush="{Binding IsCanIsCanFDDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" />
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="CanArbBaseBitrateColumn" x:Name="CanArbBaseBitrateColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="CanArbBaseBitrate" HeaderTitle="{strings:TranslateExtension CanParameters_ArbBaseBitrate}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox ItemsSource="{Binding ArbBaseBitrate_Values}" BorderThickness="2.0" BorderBrush="{Binding IsCanArbBaseBitrateDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"
|
||||
IsEditable="True">
|
||||
<ComboBox.Text>
|
||||
<Binding Path="CanArbBaseBitrate" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True" ValidatesOnNotifyDataErrors="True" ValidatesOnExceptions="True">
|
||||
<Binding.ValidationRules>
|
||||
<!--<validators:CANArbBaseBitrateValidator />-->
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</ComboBox.Text>
|
||||
</ComboBox>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="CanArbBaseSJWColumn" x:Name="CanArbBaseSJWColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="CanArbBaseSJW" HeaderTitle="{strings:TranslateExtension CanParameters_ArbBaseSJW}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox ItemsSource="{Binding ArbBaseSJW_Values}" BorderThickness="2.0" BorderBrush="{Binding IsCanArbBaseSJWDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"
|
||||
IsEditable="True">
|
||||
<ComboBox.Text>
|
||||
<Binding Path="CanArbBaseSJW" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True" ValidatesOnNotifyDataErrors="True" ValidatesOnExceptions="True">
|
||||
<Binding.ValidationRules>
|
||||
<!--<validators:CANArbBaseBitrateValidator />-->
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</ComboBox.Text>
|
||||
</ComboBox>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="CanDataBitrateColumn" x:Name="CanDataBitrateColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="CanDataBitrate" HeaderTitle="{strings:TranslateExtension CanParameters_DataBitrate}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox ItemsSource="{x:Static constants:EmbeddedSensors.DATABITRATE_VALUES}" BorderThickness="2.0" BorderBrush="{Binding IsCanArbBaseSJWDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"
|
||||
IsEditable="True" Visibility="{Binding CanIsFD, Converter={StaticResource BoolToVisConverter}}">
|
||||
<ComboBox.Text>
|
||||
<Binding Path="CanDataBitrate" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True" ValidatesOnNotifyDataErrors="True" ValidatesOnExceptions="True">
|
||||
<Binding.ValidationRules>
|
||||
<!--<validators:CANArbBaseBitrateValidator />-->
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</ComboBox.Text>
|
||||
</ComboBox>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="CanDataSJWColumn" x:Name="CanDataSJWColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="CanDataSJW" HeaderTitle="{strings:TranslateExtension CanParameters_DataSJW}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox ItemsSource="{Binding DataSJW_Values}" BorderThickness="2.0" BorderBrush="{Binding IsCanArbBaseSJWDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"
|
||||
IsEditable="True" Visibility="{Binding CanIsFD, Converter={StaticResource BoolToVisConverter}}">
|
||||
<ComboBox.Text>
|
||||
<Binding Path="CanDataSJW" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True" ValidatesOnNotifyDataErrors="True" ValidatesOnExceptions="True">
|
||||
<Binding.ValidationRules>
|
||||
<!--<validators:CANArbBaseBitrateValidator />-->
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</ComboBox.Text>
|
||||
</ComboBox>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
<GridViewColumn AutomationProperties.AutomationId="CanFileTypeColumn" x:Name="CanFileTypeColumn">
|
||||
<controls:GridViewColumnHeaderSearchable Tag="CanFileType" HeaderTitle="{strings:TranslateExtension CanParameters_FileType}" Search="GridViewColumnHeaderSearchable_OnSearch" ListviewId="{Binding ListViewId}" ClickHandler="GridViewColumnHeader_Click"/>
|
||||
<GridViewColumn.CellTemplate>
|
||||
<ItemContainerTemplate>
|
||||
<ComboBox ItemsSource="{x:Static constants:EmbeddedSensors.FILETYPE_VALUES}" BorderThickness="2.0" BorderBrush="{Binding IsCanArbBaseSJWDifferent, Converter={StaticResource BooleanToBorderBrushConverter}}"
|
||||
IsEnabled="{Binding DataContext.ReadOnlyParametersMode, Converter={StaticResource InverseBoolConverter}, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"
|
||||
IsEditable="True">
|
||||
<ComboBox.Text>
|
||||
<Binding Path="CanFileType" UpdateSourceTrigger="PropertyChanged" ValidatesOnDataErrors="True" ValidatesOnNotifyDataErrors="True" ValidatesOnExceptions="True">
|
||||
<Binding.ValidationRules>
|
||||
<!--<validators:CANArbBaseBitrateValidator />-->
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</ComboBox.Text>
|
||||
</ComboBox>
|
||||
</ItemContainerTemplate>
|
||||
</GridViewColumn.CellTemplate>
|
||||
</GridViewColumn>
|
||||
|
||||
</controls:AutoSizedGridView>
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
<!--</ScrollViewer>-->
|
||||
</Grid>
|
||||
</base:BaseView>
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user