<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Client.Avalonia.Views.ParserView">
<Grid RowDefinitions="*,Auto" Margin="12">
<!-- 主区域:上输入,下结果 -->
<Grid Grid.Row="0" RowDefinitions="2*,3*">
<!-- 上方输入区 -->
<Border Grid.Row="0"
BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
BorderThickness="1" CornerRadius="6" Padding="14">
<Grid RowDefinitions="Auto,*,Auto">
<Grid ColumnDefinitions="6,*">
<Border Grid.Column="0" Background="{DynamicResource SystemAccentColor}" CornerRadius="3" />
<Label Grid.Column="1" FontWeight="Bold" FontSize="14" Margin="8,0,0,0"
VerticalAlignment="Center">十六进制报文</Label>
</Grid>
<TextBox Grid.Row="1"
Text="{Binding HexInput}"
AcceptsReturn="True"
Watermark="粘贴十六进制报文(支持空格、0x前缀、换行)
例如: 7E 02 00 00 2A 01 38 00 01 23 45 67 89 00 07 ..."
FontFamily="Consolas"
FontSize="13" />
<StackPanel Grid.Row="2" Orientation="Horizontal" Spacing="10" Margin="0,6,0,0">
<Button Content="🔍 解码" Command="{Binding DecodeCommand}"
Background="{DynamicResource SystemAccentColor}" Foreground="White" Padding="20,6" />
<Button Content="清空" Command="{Binding ClearCommand}" Padding="16,6" />
<Label Content="{Binding StatusText}" VerticalAlignment="Center" FontSize="12" Foreground="Gray" />
</StackPanel>
</Grid>
</Border>
<!-- 下方结果区 -->
<Border Grid.Row="1"
BorderBrush="{DynamicResource SystemControlForegroundBaseLowBrush}"
BorderThickness="1" CornerRadius="6" Padding="14"
IsVisible="{Binding HasResult}">
<Grid RowDefinitions="Auto,*">
<Grid ColumnDefinitions="6,*">
<Border Grid.Column="0" Background="{DynamicResource SystemAccentColor}" CornerRadius="3" />
<Label Grid.Column="1" FontWeight="Bold" FontSize="14" Margin="8,0,0,0"
VerticalAlignment="Center">解析结果</Label>
</Grid>
<TabControl Grid.Row="1">
<TabItem Header="基本信息">
<ScrollViewer>
<StackPanel Spacing="8" Margin="12">
<Grid ColumnDefinitions="110,*">
<Label Grid.Column="0" FontWeight="Bold" HorizontalAlignment="Right" Margin="0,0,12,0">消息ID:</Label>
<Label Grid.Column="1" Content="{Binding ResultKind}" />
</Grid>
<Grid ColumnDefinitions="110,*">
<Label Grid.Column="0" FontWeight="Bold" HorizontalAlignment="Right" Margin="0,0,12,0">消息名称:</Label>
<Label Grid.Column="1" Content="{Binding ResultKindName}" />
</Grid>
<Grid ColumnDefinitions="110,*">
<Label Grid.Column="0" FontWeight="Bold" HorizontalAlignment="Right" Margin="0,0,12,0">终端手机号:</Label>
<Label Grid.Column="1" Content="{Binding ResultMobile}" />
</Grid>
<Grid ColumnDefinitions="110,*">
<Label Grid.Column="0" FontWeight="Bold" HorizontalAlignment="Right" Margin="0,0,12,0">流水号:</Label>
<Label Grid.Column="1" Content="{Binding ResultSequence}" />
</Grid>
<Grid ColumnDefinitions="110,*">
<Label Grid.Column="0" FontWeight="Bold" HorizontalAlignment="Right" Margin="0,0,12,0">协议版本:</Label>
<Label Grid.Column="1" Content="{Binding ResultVersion}" />
</Grid>
<Grid ColumnDefinitions="110,*">
<Label Grid.Column="0" FontWeight="Bold" HorizontalAlignment="Right" Margin="0,0,12,0" VerticalAlignment="Top">字段列表:</Label>
<ScrollViewer Grid.Column="1" MaxHeight="100">
<TextBlock Text="{Binding ResultFieldList}" FontFamily="Consolas" FontSize="11" />
</ScrollViewer>
</Grid>
</StackPanel>
</ScrollViewer>
</TabItem>
<TabItem Header="JSON 消息体">
<ScrollViewer>
<TextBlock Text="{Binding ResultBody}"
FontFamily="Consolas" FontSize="11"
TextWrapping="Wrap" Margin="8" />
</ScrollViewer>
</TabItem>
<TabItem Header="十六进制负载">
<ScrollViewer>
<TextBlock Text="{Binding ResultHex}"
FontFamily="Consolas" FontSize="11"
TextWrapping="Wrap" Margin="8" />
</ScrollViewer>
</TabItem>
<TabItem Header="原始报文">
<ScrollViewer>
<TextBlock Text="{Binding ResultRaw}"
FontFamily="Consolas" FontSize="11"
TextWrapping="Wrap" Margin="8" />
</ScrollViewer>
</TabItem>
</TabControl>
</Grid>
</Border>
</Grid>
</Grid>
</UserControl>
|