Files
WCS/Plugins/Driver/Cowain.Driver/Views/VariableMonitorView.axaml
2026-03-02 09:08:20 +08:00

137 lines
4.4 KiB
XML

<UserControl
x:Class="Plugin.Cowain.Driver.Views.VariableMonitorView"
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="using:Cowain.Base.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:extensions="using:Cowain.Base.Extensions"
xmlns:i="using:Avalonia.Xaml.Interactivity"
xmlns:i18n="clr-namespace:Ke.Bee.Localization.Extensions;assembly=Ke.Bee.Localization"
xmlns:ia="using:Avalonia.Xaml.Interactions.Core"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:semi="https://irihi.tech/semi"
xmlns:u="https://irihi.tech/ursa"
xmlns:vm="using:Plugin.Cowain.Driver.ViewModels"
d:DesignHeight="450"
d:DesignWidth="800"
x:DataType="vm:VariableMonitorViewModel"
mc:Ignorable="d">
<Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Loaded">
<ia:InvokeCommandAction Command="{Binding LoadedCommand}" />
</ia:EventTriggerBehavior>
</Interaction.Behaviors>
<Grid ColumnDefinitions="Auto *">
<ScrollViewer>
<StackPanel Spacing="8">
<TextBlock Text="{i18n:Localize VariableMonitorView.DataGrid.DeviceName}" />
<u:SelectionList
Name="roleMenu"
Width="150"
ItemsSource="{Binding Devices}"
SelectedItem="{Binding SelectedDevice}">
<u:SelectionList.Indicator>
<Border Background="Transparent" CornerRadius="4">
<Border
Width="4"
Margin="0,8"
HorizontalAlignment="Left"
VerticalAlignment="Stretch"
Background="{DynamicResource SemiBlue6}"
CornerRadius="4" />
</Border>
</u:SelectionList.Indicator>
<u:SelectionList.ItemTemplate>
<DataTemplate>
<Panel Height="30">
<TextBlock
Margin="8,0"
VerticalAlignment="Center"
Classes.Active="{Binding $parent[u:SelectionListItem].IsSelected, Mode=OneWay}"
Text="{Binding DeviceName}">
<TextBlock.Styles>
<Style Selector="TextBlock.Active">
<Setter Property="Foreground" Value="{DynamicResource SemiOrange6}" />
</Style>
</TextBlock.Styles>
</TextBlock>
</Panel>
</DataTemplate>
</u:SelectionList.ItemTemplate>
</u:SelectionList>
</StackPanel>
</ScrollViewer>
<Grid Grid.Column="1" RowDefinitions="* Auto ">
<DataGrid
Margin="8"
CanUserReorderColumns="True"
CanUserResizeColumns="True"
CanUserSortColumns="True"
HeadersVisibility="All"
IsReadOnly="True"
ItemsSource="{Binding SelectedDevice.Variables}">
<DataGrid.Columns>
<DataGridTextColumn
Width="100"
x:DataType="vm:VariableViewModel"
Binding="{Binding Id}"
Header="{i18n:Localize VariableMonitorView.DataGrid.Id}" />
<DataGridTextColumn
Width="100"
x:DataType="vm:VariableViewModel"
Binding="{Binding Name}"
Header="{i18n:Localize VariableMonitorView.DataGrid.Name}" />
<DataGridTextColumn
Width="100"
x:DataType="vm:VariableViewModel"
Binding="{Binding Address}"
Header="{i18n:Localize VariableMonitorView.DataGrid.Address}" />
<DataGridTextColumn
Width="100"
x:DataType="vm:VariableViewModel"
Binding="{Binding Value}"
Header="{i18n:Localize VariableMonitorView.DataGrid.Value}" />
<DataGridTextColumn
Width="100"
x:DataType="vm:VariableViewModel"
Binding="{Binding IsSuccess}"
Header="{i18n:Localize VariableMonitorView.DataGrid.IsSuccess}" />
<DataGridTextColumn
Width="100"
x:DataType="vm:VariableViewModel"
Binding="{Binding ArrayCount}"
Header="{i18n:Localize VariableMonitorView.DataGrid.ArrayCount}" />
<DataGridTextColumn
Width="100"
x:DataType="vm:VariableViewModel"
Binding="{Binding DataType}"
Header="{i18n:Localize VariableMonitorView.DataGrid.DataType}" />
<DataGridTextColumn
MinWidth="200"
x:DataType="vm:VariableViewModel"
Binding="{Binding Desc}"
Header="{i18n:Localize VariableMonitorView.DataGrid.Desc}" />
</DataGrid.Columns>
</DataGrid>
<StackPanel
Grid.Row="1"
Orientation="Horizontal"
Spacing="10">
<TextBlock Text="{i18n:Localize VariableMonitorView.Connected}" />
<TextBlock Text=":" />
<TextBlock Text="{Binding SelectedDevice.IsConnected}" />
<TextBlock Text="{i18n:Localize VariableMonitorView.ReadUseTime}" />
<TextBlock Text=":" />
<TextBlock Text="{Binding SelectedDevice.ReadUseTime}" />
<TextBlock Text="ms" />
</StackPanel>
</Grid>
</Grid>
</UserControl>