<UserControl x:Class="MainModule.Views.AutomatedTestingView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:prism="http://prismlibrary.com/" 
             xmlns:local="clr-namespace:MainModule.Views"
             xmlns:b="clr-namespace:UIShare.Behaviors;assembly=UIShare" 
             xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
             xmlns:vs="clr-namespace:TestingModule.Views;assembly=TestingModule"
             xmlns:converters="clr-namespace:UIShare.Converters;assembly=UIShare"
             mc:Ignorable="d" 
             
             d:DesignHeight="450" d:DesignWidth="800">
    <UserControl.Resources>
        <converters:LessThanConverter x:Key="LessThanConverter" />
    </UserControl.Resources>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Loaded">
            <i:InvokeCommandAction Command="{Binding LoadedCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    <Border >
        <i:Interaction.Behaviors>
            <b:MouseDoubleClickBehavior 
                Command="{Binding DataContext.RefreshCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"/>
        </i:Interaction.Behaviors>

        <!-- 给最外层 Grid 命名，方便子控件通过 Binding 找到它的 ActualWidth -->
        <Grid x:Name="RootGrid">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="1.5*"/>
                <!-- 给第二行取个名字 Row1，方便触发器控制它 -->
                <RowDefinition x:Name="Row1">
                    <RowDefinition.Style>
                        <Style TargetType="RowDefinition">
                            <!-- 正常情况下是占 1* 比例 -->
                            <Setter Property="Height" Value="1*" />
                            <Style.Triggers>
                                <!-- 当宽度小于 600 时，把第二行的高度死死锁在 0 像素 -->
                                <DataTrigger Binding="{Binding ActualWidth, ElementName=RootGrid, Converter={StaticResource LessThanConverter}, ConverterParameter=600}" Value="True">
                                    <Setter Property="Height" Value="0" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </RowDefinition.Style>
                </RowDefinition>
            </Grid.RowDefinitions>

            <!-- ==================== 1. 左侧：命令树 ==================== -->
            <vs:CommandTree DataContext="{Binding CommandTreeVM}"
                            Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Margin="5">
                <vs:CommandTree.Style>
                    <Style TargetType="UserControl">
                        <Style.Triggers>
                            <!-- 核心逻辑：当最外层 Grid 宽度小于 600 时，隐藏自己 -->
                            <DataTrigger Binding="{Binding ActualWidth, ElementName=RootGrid, Converter={StaticResource LessThanConverter}, ConverterParameter=600}" Value="True">
                                <Setter Property="Visibility" Value="Collapsed" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </vs:CommandTree.Style>
            </vs:CommandTree>

            <!-- ==================== 2. 中上：步骤管理（核心显示） ==================== -->
            <!-- 1. 注意：标签上不要再写任何 Grid.Row、Grid.Column、Grid.ColumnSpan 属性了！ -->
            <vs:StepsManager DataContext="{Binding StepsManagerVM}"
                 Margin="5">
                <vs:StepsManager.Style>
                    <Style TargetType="UserControl">
                        <!-- 2. 【核心】把默认的网格位置写在这里（低优先级） -->
                        <Setter Property="Grid.Row" Value="0"/>
                        <Setter Property="Grid.Column" Value="1"/>
                        <Setter Property="Grid.RowSpan" Value="1"/>
                        <Setter Property="Grid.ColumnSpan" Value="2"/>

                        <Style.Triggers>
                            <!-- 3. 当宽度小于 600 时，触发器就会顺理成章地覆盖上面的默认值，变成全屏 -->
                            <DataTrigger Binding="{Binding ActualWidth, ElementName=RootGrid, Converter={StaticResource LessThanConverter}, ConverterParameter=600}" Value="True">
                                <Setter Property="Grid.Row" Value="0" />
                                <Setter Property="Grid.Column" Value="0" />
                                <!-- 附加属性在 Trigger 里的标准全称写法就是这样，只要上面没有本地值冲突，它就能完美生效 -->
                                <Setter Property="Grid.RowSpan" Value="2" />
                                <Setter Property="Grid.ColumnSpan" Value="4" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </vs:StepsManager.Style>
            </vs:StepsManager>

            <!-- ==================== 3. 右上：单步编辑 ==================== -->
            <vs:SingleStepEdit DataContext="{Binding SingleStepEditVM}"
                               Grid.Row="0" Grid.Column="3" Margin="5">
                <vs:SingleStepEdit.Style>
                    <Style TargetType="UserControl">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding ActualWidth, ElementName=RootGrid, Converter={StaticResource LessThanConverter}, ConverterParameter=600}" Value="True">
                                <Setter Property="Visibility" Value="Collapsed" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </vs:SingleStepEdit.Style>
            </vs:SingleStepEdit>

            <!-- ==================== 4. 中下：日志显示 ==================== -->
            <vs:LogArea DataContext="{Binding LogAreaVM}"
            Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Margin="5">
                <!-- 这里不需要写 Visibility 触发器了，保持默认即可 -->
            </vs:LogArea>

            <!-- ==================== 5. 右下：参数管理 ==================== -->
            <vs:ParametersManager DataContext="{Binding ParametersManagerVM}"
                                  Grid.Row="1" Grid.Column="3" Margin="5">
                <vs:ParametersManager.Style>
                    <Style TargetType="UserControl">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding ActualWidth, ElementName=RootGrid, Converter={StaticResource LessThanConverter}, ConverterParameter=600}" Value="True">
                                <Setter Property="Visibility" Value="Collapsed" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </vs:ParametersManager.Style>
            </vs:ParametersManager>

        </Grid>
    </Border>
</UserControl>