Fixed bool support and duplicate register refs

This commit is contained in:
Felix Weiß
2023-08-09 18:08:47 +02:00
parent a06a69be3f
commit 111eacb785
31 changed files with 599 additions and 277 deletions

View File

@@ -145,25 +145,148 @@
</StackPanel>
<DataGrid Grid.Row="2"
AutoGenerateColumns="False"
IsReadOnly="True"
ItemsSource="{Binding Plc.Registers, Mode=OneWay}">
<DataGrid.Columns>
<DataGridTextColumn Header="FP Address" Binding="{Binding PLCAddressName}"/>
<DataGridTextColumn Header="Type" Binding="{Binding UnderlyingSystemType.Name}"/>
<DataGridTextColumn Header="Value" Binding="{Binding ValueStr}"/>
<DataGridTextColumn Header="Poll Level" Binding="{Binding PollLevel, Mode=OneWay}"/>
<DataGridTextColumn Header="Update Frequency" Binding="{Binding UpdateFreqHz, StringFormat='{}{0} Hz',Mode=OneWay}"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border Background="{Binding MemoryAreaHash, Mode=OneWay, Converter={StaticResource hashColor}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<GridSplitter Grid.Column="1"
Grid.Row="1"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Background="Gray"
ShowsPreview="true"
Width="10">
<GridSplitter.Template>
<ControlTemplate>
<Rectangle Fill="Gray"
Width="2"
Margin="2"/>
</ControlTemplate>
</GridSplitter.Template>
</GridSplitter>
<TextBlock Text="Underlying Registers"
FontSize="18"
Margin="10"/>
<DataGrid Grid.Row="1"
AutoGenerateColumns="False"
IsReadOnly="True"
ItemsSource="{Binding Plc.Registers, Mode=OneWay}">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding IsAutoGenerated}" Value="True">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="FP Address" Binding="{Binding PLCAddressName}"/>
<DataGridTextColumn Header="Type" Binding="{Binding UnderlyingSystemType.Name}"/>
<DataGridTemplateColumn Header="Value" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border HorizontalAlignment="Left"
Padding="2,0">
<TextBlock Text="{Binding ValueStr}"/>
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding ValueStr}" Value="True">
<Setter Property="Background" Value="Blue"/>
<Setter Property="TextElement.Foreground" Value="White"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Poll Level" Binding="{Binding PollLevel, Mode=OneWay}"/>
<DataGridTextColumn Header="Update Frequency" Binding="{Binding UpdateFreqHz, StringFormat='{}{0} Hz',Mode=OneWay}"/>
<DataGridTemplateColumn Width="15">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border Background="{Binding MemoryAreaHash, Mode=OneWay, Converter={StaticResource hashColor}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<TextBlock Text="Property Bindings"
Grid.Column="2"
FontSize="18"
Margin="10"/>
<Border Grid.Column="2"
Grid.Row="1"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
BorderBrush="LightBlue"
BorderThickness="1.5">
<ScrollViewer>
<StackPanel>
<TextBlock Text="Boolean internal relays"/>
<TextBlock>
<Run Text="R11A Nullable property: "/>
<Run Text="{Binding RegCollection.TestR11A}"
FontWeight="Bold"/>
</TextBlock>
<TextBlock>
<Run Text="R11A Duplicate non nullable property: "/>
<Run Text="{Binding RegCollection.TestR11A_Duplicate_NonNullable}"
FontWeight="Bold"/>
</TextBlock>
<TextBlock>
<Run Text="R16B"/>
<Run Text="{Binding RegCollection.TestR16B}"
FontWeight="Bold"/>
</TextBlock>
<TextBlock>
<Run Text="DT1000 Word duplicate: "/>
<Run Text="{Binding RegCollection.TestDT100_Word_Duplicate, Mode=OneWay}"
FontWeight="Bold"/>
</TextBlock>
<TextBlock>
<Run Text="DT1000 Word direct bit read (Idx 0): "/>
<Run Text="{Binding RegCollection.TestDT100_Word_Duplicate_SingleBit, Mode=OneWay}"
FontWeight="Bold"/>
</TextBlock>
<TextBlock>
<Run Text="DDT1010 DWord direct bit read (Idx 1): "/>
<Run Text="{Binding RegCollection.TestDDT1010_DWord_Duplicate_SingleBit, Mode=OneWay}"
FontWeight="Bold"/>
</TextBlock>
</StackPanel>
</ScrollViewer>
</Border>
</Grid>
</Grid>
</UserControl>