// 原始文件: MainWindow.xaml (WPF 界面布局 XAML)
// 本文件为文本示例（平台不允许原扩展名），复制时请改回原名。

<!--
MainWindow.xaml — 工业上位机主界面 (WPF)

严格遵循工业级红线：
- 红线①：UI与业务绝对分离。XAML只定义布局，xaml.cs只做事件绑定。
- 红线③：样式与布局分离。样式资源在独立 ResourceDictionary 中。
- 红线④：控件命名规范。使用 x:Name 配合前缀命名。
-->
<Window x:Class="PowerTestController.UI.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="电源测试控制系统"
        MinWidth="1200" MinHeight="750"
        WindowStartupLocation="CenterScreen"
        Style="{StaticResource MainWindowStyle}">

    <Window.Resources>
        <ResourceDictionary Source="Styles/DarkTheme.xaml"/>
    </Window.Resources>

    <Grid Margin="8">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="3*" MinWidth="280"/>
            <ColumnDefinition Width="4"/>
            <ColumnDefinition Width="7*"/>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <!-- ═══════════════════════════════════════
             左侧控制面板
             ═══════════════════════════════════════ -->
        <ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto">
            <StackPanel Margin="4" x:Name="pnl_left">

                <!-- 连接设置 -->
                <GroupBox Header="仪器连接" x:Name="grp_connection">
                    <StackPanel Margin="8">
                        <TextBlock Text="IP 地址:" Margin="0,4,0,2"/>
                        <TextBox x:Name="txt_ip_address" Text="192.168.1.100"
                                 Style="{StaticResource InputStyle}"/>

                        <TextBlock Text="端口:" Margin="0,8,0,2"/>
                        <TextBox x:Name="txt_port" Text="5025"
                                 Style="{StaticResource InputStyle}"/>

                        <StackPanel Orientation="Horizontal" Margin="0,12,0,0">
                            <Button x:Name="btn_connect" Content="连接"
                                    Style="{StaticResource PrimaryButtonStyle}"
                                    Width="80" Margin="0,0,8,0"/>
                            <Button x:Name="btn_disconnect" Content="断开"
                                    Style="{StaticResource DangerButtonStyle}"
                                    Width="80" IsEnabled="False"/>
                        </StackPanel>

                        <TextBlock x:Name="lbl_connection_status"
                                   Text="● 未连接" Margin="0,8,0,0"
                                   Style="{StaticResource DisconnectedStatusStyle}"/>
                    </StackPanel>
                </GroupBox>

                <!-- 测量控制 -->
                <GroupBox Header="测量控制" x:Name="grp_measurement" Margin="0,12,0,0">
                    <StackPanel Margin="8">
                        <TextBlock Text="电压设定:"/>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="Auto"/>
                            </Grid.ColumnDefinitions>
                            <TextBox x:Name="txt_voltage_set" Text="12.0"
                                     Style="{StaticResource InputStyle}"/>
                            <TextBlock Text="V" Grid.Column="1"
                                       VerticalAlignment="Center" Margin="4,0,0,0"/>
                        </Grid>

                        <TextBlock Text="电流设定:" Margin="0,8,0,2"/>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="Auto"/>
                            </Grid.ColumnDefinitions>
                            <TextBox x:Name="txt_current_set" Text="0.5"
                                     Style="{StaticResource InputStyle}"/>
                            <TextBlock Text="A" Grid.Column="1"
                                       VerticalAlignment="Center" Margin="4,0,0,0"/>
                        </Grid>

                        <StackPanel Orientation="Horizontal" Margin="0,12,0,0">
                            <Button x:Name="btn_start_measure" Content="▶ 开始测量"
                                    Style="{StaticResource PrimaryButtonStyle}"
                                    Width="100" Margin="0,0,8,0"/>
                            <Button x:Name="btn_stop_measure" Content="⏹ 停止"
                                    Style="{StaticResource DangerButtonStyle}"
                                    Width="100" IsEnabled="False"/>
                        </StackPanel>

                        <ProgressBar x:Name="prg_progress" IsIndeterminate="True"
                                     Height="6" Margin="0,12,0,0"
                                     Visibility="Collapsed"/>

                        <Button x:Name="btn_emergency_stop" Content="⚠ 紧急停止"
                                Style="{StaticResource EmergencyButtonStyle}"
                                Height="40" Margin="0,12,0,0"/>
                    </StackPanel>
                </GroupBox>
            </StackPanel>
        </ScrollViewer>

        <!-- 分割线 -->
        <GridSplitter Grid.Column="1" HorizontalAlignment="Stretch"
                      Width="4" Background="#2E2E4E"/>

        <!-- ═══════════════════════════════════════
             右侧数据展示
             ═══════════════════════════════════════ -->
        <Grid Grid.Column="2" Margin="4,4,0,4">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="2*"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>

            <!-- 实时数据 -->
            <GroupBox Header="实时数据" x:Name="grp_realtime">
                <UniformGrid Rows="1" Columns="4" Margin="8">
                    <StackPanel HorizontalAlignment="Center">
                        <TextBlock Text="电压" Style="{StaticResource DataLabelStyle}"/>
                        <TextBlock x:Name="lbl_voltage" Text="0.000 V"
                                   Style="{StaticResource DataValueStyle}"/>
                    </StackPanel>
                    <StackPanel HorizontalAlignment="Center">
                        <TextBlock Text="电流" Style="{StaticResource DataLabelStyle}"/>
                        <TextBlock x:Name="lbl_current" Text="0.000 A"
                                   Style="{StaticResource DataValueStyle}"/>
                    </StackPanel>
                    <StackPanel HorizontalAlignment="Center">
                        <TextBlock Text="功率" Style="{StaticResource DataLabelStyle}"/>
                        <TextBlock x:Name="lbl_power" Text="0.000 W"
                                   Style="{StaticResource DataValueStyle}"/>
                    </StackPanel>
                    <StackPanel HorizontalAlignment="Center">
                        <TextBlock Text="温度" Style="{StaticResource DataLabelStyle}"/>
                        <TextBlock x:Name="lbl_temperature" Text="--.- °C"
                                   Style="{StaticResource WarningValueStyle}"/>
                    </StackPanel>
                </UniformGrid>
            </GroupBox>

            <!-- 数据表格 -->
            <GroupBox Header="测量记录" Grid.Row="1" Margin="0,8,0,0">
                <DockPanel>
                    <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal"
                                Margin="8" HorizontalAlignment="Left">
                        <Button x:Name="btn_export_csv" Content="导出 CSV"
                                Width="80" Margin="0,0,8,0"/>
                        <Button x:Name="btn_export_excel" Content="导出 Excel"
                                Width="80" Margin="0,0,8,0"/>
                        <Button x:Name="btn_clear_table" Content="清空表格"
                                Width="80"/>
                    </StackPanel>

                    <DataGrid x:Name="tbl_results" AutoGenerateColumns="False"
                              Style="{StaticResource DataGridStyle}">
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="时间" Binding="{Binding Time}" Width="*"/>
                            <DataGridTextColumn Header="类型" Binding="{Binding Type}" Width="*"/>
                            <DataGridTextColumn Header="数值" Binding="{Binding Value}" Width="*"/>
                            <DataGridTextColumn Header="单位" Binding="{Binding Unit}" Width="*"/>
                            <DataGridTextColumn Header="状态" Binding="{Binding Status}" Width="*"/>
                        </DataGrid.Columns>
                    </DataGrid>
                </DockPanel>
            </GroupBox>

            <!-- 状态栏 -->
            <StatusBar Grid.Row="2" x:Name="status_bar">
                <StatusBarItem>
                    <TextBlock x:Name="lbl_status_msg" Text="就绪"/>
                </StatusBarItem>
            </StatusBar>
        </Grid>
    </Grid>
</Window>
