133 lines
7.5 KiB
XML
133 lines
7.5 KiB
XML
<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> |