Files
ADP/MainModule/Views/AutomatedTestingView.xaml
2026-06-05 10:57:09 +08:00

128 lines
7.3 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>
<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>