perf: 优化界面布局

This commit is contained in:
uye
2026-07-14 16:41:11 +08:00
parent c9c4141b94
commit 4f38eb8294

View File

@@ -26,6 +26,7 @@
<controls:TextBlock
Margin="0,5,0,0"
HorizontalAlignment="Left"
d:Text="1: 当前/上次 - 不选择 x0"
Text="{Binding PlanInfo}"
TextWrapping="Wrap" />
<StackPanel Orientation="Horizontal">
@@ -34,7 +35,7 @@
VerticalAlignment="Bottom"
d:IsHitTestVisible="True"
Command="{s:Action AddPlan}"
Content="添加"
Content="{DynamicResource AddPlan}"
IsHitTestVisible="{c:Binding !IsCurrentTaskRunning,
Source={x:Static ui_vms:TaskQueueViewModel.TaskSettingVisibilities}}" />
<Button
@@ -42,7 +43,7 @@
VerticalAlignment="Bottom"
d:IsHitTestVisible="True"
Command="{s:Action CollapseAll}"
Content="折叠"
Content="{DynamicResource CollapseAll}"
IsHitTestVisible="{c:Binding !IsCurrentTaskRunning,
Source={x:Static ui_vms:TaskQueueViewModel.TaskSettingVisibilities}}" />
</StackPanel>
@@ -70,185 +71,203 @@
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding Title}" IsExpanded="{Binding IsExpanded}">
<Border BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel>
<Grid x:Name="StageItemGrid" Margin="0,0,0,-2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Expander HorizontalContentAlignment="Stretch" IsExpanded="{Binding IsExpanded}">
<Expander.Header>
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<controls:TextBlock
HorizontalAlignment="Left"
Text="{Binding Title}"
TextTrimming="CharacterEllipsis" />
<Button
Grid.Column="1"
Width="25"
Height="25"
Margin="0,0,6,0"
Padding="0"
hc:IconElement.Geometry="{StaticResource DeleteTaskGeometry}"
hc:IconElement.Height="15"
hc:IconElement.Width="15"
Command="{s:Action RemovePlan,
Target={x:Static taskQueue_vms:DepotMaintainTaskUserControlModel.Instance}}"
CommandParameter="{Binding}"
DockPanel.Dock="Right" />
</Grid>
</Expander.Header>
<Border
BorderBrush="{DynamicResource BorderBrush}"
BorderThickness="1,0,1,1"
CornerRadius="0,0,4,4">
<Grid Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<controls:TextBlock Grid.Column="0" Text="{DynamicResource StageSelect}" />
<Grid
Grid.Column="1"
Height="30"
Margin="-10,0,0,0">
<!-- 当 IsStageManually 为 false 时显示 ComboBox -->
<ComboBox
ItemsSource="{Binding StageListSource, Source={x:Static ui_vms:TaskQueueViewModel.DepotMaintainTask}}"
ScrollViewer.CanContentScroll="False"
SelectedValue="{Binding Stage}"
SelectedValuePath="Value"
Visibility="{c:Binding !IsStageManually,
Source={x:Static ui_vms:TaskQueueViewModel.DepotMaintainTask}}">
<ComboBox.ItemContainerStyle>
<Style BasedOn="{StaticResource ComboBoxItemBaseStyle}" TargetType="ComboBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding IsVisible}" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Display}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsOutdated}" Value="True">
<Setter Property="TextDecorations" Value="Strikethrough" />
<Setter Property="Foreground" Value="{DynamicResource ErrorLogBrush}" />
</DataTrigger>
<DataTrigger Binding="{Binding IsOpen}" Value="False">
<Setter Property="Opacity" Value="0.5" />
</DataTrigger>
<DataTrigger Binding="{Binding IsOpen}" Value="True">
<Setter Property="Opacity" Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<!-- 当 IsStageManually 为 true 时显示 TextBox -->
<TextBox
Height="30"
hc:InfoElement.Placeholder="{DynamicResource DefaultStage}"
IsEnabled="{c:Binding !IsStageItemDragging,
Source={x:Static ui_vms:TaskQueueViewModel.FightTask}}"
Opacity="{c:Binding 'IsOpen ? 1 : 0.5'}"
Text="{Binding Stage, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{DynamicResource IsStageManuallyTip}"
Visibility="{c:Binding IsStageManually,
Source={x:Static ui_vms:TaskQueueViewModel.DepotMaintainTask}}" />
</Grid>
</Grid>
<Grid Margin="3,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="100" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<controls:TextBlock
Grid.Row="0"
Grid.Column="0"
Margin="22,0,0,0"
HorizontalAlignment="Left"
Text="{DynamicResource AssignedMaterial}" />
<!-- 关卡选择 -->
<controls:TextBlock
Grid.Row="0"
Grid.Column="0"
Margin="0,0,6,0"
VerticalAlignment="Center"
Text="{DynamicResource StageSelect}" />
<Grid
Grid.Row="0"
Grid.Column="1"
Height="30">
<!-- 当 IsStageManually 为 false 时显示 ComboBox -->
<ComboBox
Grid.Row="0"
Grid.Column="1"
Grid.ColumnSpan="2"
Height="30"
Margin="3,2"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Center"
s:View.ActionTarget="{Binding}"
DisplayMemberPath="Display"
DropDownClosed="{s:Action DropsListDropDownClosed}"
IsEditable="True"
IsTextSearchEnabled="False"
ItemsSource="{Binding DropsList, Source={x:Static ui_vms:TaskQueueViewModel.FightTask}}"
Loaded="{s:Action MakeComboBoxSearchable,
Target={x:Type ui_vms:SettingsViewModel}}"
SelectedValue="{Binding DropId}"
ItemsSource="{Binding StageListSource, Source={x:Static ui_vms:TaskQueueViewModel.DepotMaintainTask}}"
ScrollViewer.CanContentScroll="False"
SelectedValue="{Binding Stage}"
SelectedValuePath="Value"
Text="{Binding DropName}" />
<controls:TextBlock
Grid.Row="1"
Grid.Column="0"
Margin="22,0,0,0"
HorizontalAlignment="Left"
Text="{DynamicResource TargetInventory}" />
<hc:NumericUpDown
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2"
Width="70"
Visibility="{c:Binding !IsStageManually,
Source={x:Static ui_vms:TaskQueueViewModel.DepotMaintainTask}}">
<ComboBox.ItemContainerStyle>
<Style BasedOn="{StaticResource ComboBoxItemBaseStyle}" TargetType="ComboBoxItem">
<Style.Triggers>
<DataTrigger Binding="{Binding IsVisible}" Value="False">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Display}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding IsOutdated}" Value="True">
<Setter Property="TextDecorations" Value="Strikethrough" />
<Setter Property="Foreground" Value="{DynamicResource ErrorLogBrush}" />
</DataTrigger>
<DataTrigger Binding="{Binding IsOpen}" Value="False">
<Setter Property="Opacity" Value="0.5" />
</DataTrigger>
<DataTrigger Binding="{Binding IsOpen}" Value="True">
<Setter Property="Opacity" Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<!-- 当 IsStageManually 为 true 时显示 TextBox -->
<TextBox
Height="30"
Margin="3,2"
HorizontalAlignment="Left"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Maximum="9999"
Minimum="0"
Value="{Binding DropCount, UpdateSourceTrigger=PropertyChanged}" />
<CheckBox
Grid.Row="2"
Grid.Column="0"
Margin="0,0,0,0"
HorizontalContentAlignment="Stretch"
Content="{DynamicResource UseSanityPotion}"
IsChecked="{Binding UseMedicine}" />
<hc:NumericUpDown
Grid.Row="2"
Grid.Column="1"
Grid.ColumnSpan="2"
Width="70"
Height="30"
Margin="3,2"
HorizontalAlignment="Left"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Maximum="999"
Minimum="0"
Value="{Binding MedicineCount, UpdateSourceTrigger=PropertyChanged}" />
<CheckBox
Grid.Row="3"
Grid.Column="0"
Margin="0,0,0,0"
HorizontalContentAlignment="Stretch"
Content="{DynamicResource UseOriginitePrime}"
IsChecked="{Binding UseStone}" />
<hc:NumericUpDown
Grid.Row="3"
Grid.Column="1"
Width="70"
Height="30"
Margin="3,2"
HorizontalAlignment="Left"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Maximum="999"
Minimum="0"
Value="{Binding StoneCount, UpdateSourceTrigger=PropertyChanged}" />
<Button
Grid.Row="3"
Grid.Column="2"
Width="25"
Margin="0"
Padding="0"
hc:IconElement.Geometry="{StaticResource DeleteTaskGeometry}"
hc:IconElement.Height="15"
hc:IconElement.Width="15"
Command="{s:Action RemovePlan,
Target={x:Static taskQueue_vms:DepotMaintainTaskUserControlModel.Instance}}"
CommandParameter="{Binding}" />
hc:InfoElement.Placeholder="{DynamicResource DefaultStage}"
IsEnabled="{c:Binding !IsStageItemDragging,
Source={x:Static ui_vms:TaskQueueViewModel.FightTask}}"
Opacity="{c:Binding 'IsOpen ? 1 : 0.5'}"
Text="{Binding Stage, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{DynamicResource IsStageManuallyTip}"
Visibility="{c:Binding IsStageManually,
Source={x:Static ui_vms:TaskQueueViewModel.DepotMaintainTask}}" />
</Grid>
</StackPanel>
<!-- 指定材料 -->
<controls:TextBlock
Grid.Row="1"
Grid.Column="0"
Margin="0,p,6,0"
VerticalAlignment="Center"
Text="{DynamicResource AssignedMaterial}" />
<ComboBox
Grid.Row="1"
Grid.Column="1"
Height="30"
Margin="0,6,0,0"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Center"
s:View.ActionTarget="{Binding}"
DisplayMemberPath="Display"
DropDownClosed="{s:Action DropsListDropDownClosed}"
IsEditable="True"
IsTextSearchEnabled="False"
ItemsSource="{Binding DropsList, Source={x:Static ui_vms:TaskQueueViewModel.FightTask}}"
Loaded="{s:Action MakeComboBoxSearchable,
Target={x:Type ui_vms:SettingsViewModel}}"
SelectedValue="{Binding DropId}"
SelectedValuePath="Value"
Text="{Binding DropName}" />
<!-- 目标库存 -->
<controls:TextBlock
Grid.Row="2"
Grid.Column="0"
Margin="0,6,6,0"
VerticalAlignment="Center"
Text="{DynamicResource TargetInventory}" />
<hc:NumericUpDown
Grid.Row="2"
Grid.Column="1"
Width="70"
Height="30"
Margin="0,6,0,0"
HorizontalAlignment="Left"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Maximum="9999"
Minimum="0"
Value="{Binding DropCount, UpdateSourceTrigger=PropertyChanged}" />
<!-- 使用药剂 -->
<CheckBox
Grid.Row="3"
Grid.Column="0"
Margin="0,6,0,0"
VerticalAlignment="Center"
Content="{DynamicResource UseSanityPotion}"
IsChecked="{Binding UseMedicine}" />
<hc:NumericUpDown
Grid.Row="3"
Grid.Column="1"
Width="70"
Height="30"
Margin="0,6,0,0"
HorizontalAlignment="Left"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Maximum="999"
Minimum="0"
Value="{Binding MedicineCount, UpdateSourceTrigger=PropertyChanged}" />
<!-- 使用源石 -->
<CheckBox
Grid.Row="4"
Grid.Column="0"
Margin="0,6,0,0"
VerticalAlignment="Center"
Content="{DynamicResource UseOriginitePrime}"
IsChecked="{Binding UseStone}" />
<hc:NumericUpDown
Grid.Row="4"
Grid.Column="1"
Width="70"
Height="30"
Margin="0,6,0,0"
HorizontalAlignment="Left"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Maximum="999"
Minimum="0"
Value="{Binding StoneCount, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</Border>
</Expander>
</DataTemplate>