<Page x:Class="XFEEDToolBox.Views.PlannerPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:models="using:XFEEDToolBox.Core.Models" xmlns:vm="using:XFEEDToolBox.ViewModels" xmlns:controls="using:XFEEDToolBox.Controls">
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
<StackPanel Spacing="18" Padding="0,8,8,28">
<StackPanel Spacing="4"><TextBlock Text="跑商" Style="{StaticResource PageTitle}"/><TextBlock Text="投入资金,选择更值得飞的路线。" Style="{StaticResource MutedText}" FontSize="15"/></StackPanel>
<Border Style="{StaticResource CardStyle}" Padding="22,20"><StackPanel Spacing="14">
<Grid ColumnSpacing="20"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="1.2*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<TextBlock Text="投入资金" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
<Grid Grid.Column="1" ColumnSpacing="8"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
<NumberBox Value="{x:Bind ViewModel.TradeInvestment,Mode=TwoWay}" IsEnabled="{x:Bind ViewModel.TradeSelectionEnabled,Mode=OneWay}" Minimum="0" Maximum="1000000000000000" SpinButtonPlacementMode="Hidden" FontSize="19" HorizontalAlignment="Stretch" AutomationProperties.Name="投入资金,单位 Cr" x:Name="TradeInvestmentAmount" AutomationProperties.AutomationId="TradeInvestmentAmount"/>
<Button Grid.Column="1" Content="全部" Command="{x:Bind ViewModel.UseAllTradeFundsCommand}" IsEnabled="{x:Bind ViewModel.TradeSelectionEnabled,Mode=OneWay}" Padding="13,8" ToolTipService.ToolTip="使用留出运营与保险资金后的全部余额"/>
</Grid>
<Button Grid.Column="2" x:Name="CalculateTradeRoutesButton" Style="{StaticResource PrimaryButton}" Padding="22,12" HorizontalAlignment="Stretch" controls:AsyncAction.Command="{x:Bind ViewModel.CalculateCommand}" controls:AsyncAction.CancelCommand="{x:Bind ViewModel.CalculateCancelCommand}" controls:AsyncAction.IsRunning="{x:Bind ViewModel.IsBusy,Mode=OneWay}" AutomationProperties.AutomationId="CalculateTradeRoutesButton"><StackPanel Orientation="Horizontal" Spacing="10"><controls:GameIcon IconKey="FeatureRoute" Width="20" Height="20"/><TextBlock Text="规划路线" FontSize="17"/></StackPanel></Button>
</Grid>
<Grid ColumnSpacing="14"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<ComboBox x:Name="TradePlanningModeInput" Header="规划类型" SelectedIndex="{x:Bind ViewModel.TradePlanningModeIndex,Mode=TwoWay}" IsEnabled="{x:Bind ViewModel.TradeSelectionEnabled,Mode=OneWay}" MinWidth="150" AutomationProperties.Name="规划类型" AutomationProperties.AutomationId="TradePlanningModeInput"><x:String>常规跑商</x:String><x:String>CG 供货</x:String></ComboBox>
<TextBlock Grid.Column="1" Text="{x:Bind ViewModel.TradePlanningModeDescription,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="12" TextWrapping="Wrap" VerticalAlignment="Bottom" Margin="0,0,0,8"/>
</Grid>
<Grid ColumnSpacing="14"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="160"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
<AutoSuggestBox x:Name="TradeRegionCenterInput" Header="中心星系" Text="{x:Bind ViewModel.TradeRegionCenterText,Mode=TwoWay}" PlaceholderText="留空跟随当前位置" TextMemberPath="Name" DisplayMemberPath="Name" QueryIcon="Find" IsEnabled="{x:Bind ViewModel.TradeRegionEditable,Mode=OneWay}" TextChanged="TradeRegionCenterChanged" SuggestionChosen="TradeRegionCenterChosen" QuerySubmitted="TradeRegionCenterSubmitted" AutomationProperties.AutomationId="TradeRegionCenterInput"/>
<NumberBox x:Name="TradeRegionRadiusInput" Grid.Column="1" Header="范围半径 / ly" Value="{x:Bind ViewModel.Radius,Mode=TwoWay}" Minimum="1" Maximum="100000" SpinButtonPlacementMode="Hidden" IsEnabled="{x:Bind ViewModel.TradeRegionEditable,Mode=OneWay}" LostFocus="TradeRegionRadiusCommitted" KeyDown="TradeRegionRadiusKeyDown" AutomationProperties.AutomationId="TradeRegionRadiusInput"/>
<Button x:Name="FollowCurrentTradeRegionButton" Grid.Column="2" Content="跟随当前位置" Command="{x:Bind ViewModel.FollowCurrentTradeRegionCommand}" IsEnabled="{x:Bind ViewModel.TradeRegionEditable,Mode=OneWay}" VerticalAlignment="Bottom" Padding="14,10" AutomationProperties.AutomationId="FollowCurrentTradeRegionButton"/>
</Grid>
<TextBlock Text="{x:Bind ViewModel.TradeRegionStatus,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
<StackPanel Orientation="Horizontal" Spacing="22"><StackPanel Orientation="Horizontal" Spacing="8"><TextBlock Text="{x:Bind ViewModel.TradeShipName,Mode=OneWay}" Style="{StaticResource MutedText}"/></StackPanel><TextBlock Text="{x:Bind ViewModel.TradeCargoSummary,Mode=OneWay}" Style="{StaticResource MutedText}"/><TextBlock Text="{x:Bind ViewModel.TradeJumpSummary,Mode=OneWay}" Style="{StaticResource MutedText}" ToolTipService.ToolTip="按 Journal 最大跳距的 80% 保守估算,实际满载航程仍由游戏航线确认。"/></StackPanel>
<TextBlock Text="{x:Bind ViewModel.TradeShipPadSummary,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
<Grid ColumnSpacing="12"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><TextBlock Text="{x:Bind ViewModel.TradeFundsSummary,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/><TextBlock Grid.Column="1" Text="{x:Bind ViewModel.TradeInvestmentMode,Mode=OneWay}" Foreground="{StaticResource AccentBrush}" FontSize="11"/></Grid>
<StackPanel x:Name="TradePlanningProgressPanel" Spacing="7" Visibility="{x:Bind ViewModel.TradeProgressVisibility,Mode=OneWay}" AutomationProperties.AutomationId="TradePlanningProgressPanel">
<Grid ColumnSpacing="16"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><TextBlock Text="{x:Bind ViewModel.TradeProgressStage,Mode=OneWay}" FontWeight="SemiBold" TextWrapping="Wrap"/><TextBlock Grid.Column="1" Text="{x:Bind ViewModel.TradeProgressCount,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" VerticalAlignment="Center"/></Grid>
<ProgressBar x:Name="TradePlanningProgressBar" Minimum="0" Maximum="100" Value="{x:Bind ViewModel.TradeProgressPercent,Mode=OneWay}" IsIndeterminate="{x:Bind ViewModel.TradeProgressIsIndeterminate,Mode=OneWay}" AutomationProperties.Name="当前规划阶段进度" AutomationProperties.AutomationId="TradePlanningProgressBar"/>
<TextBlock Text="{x:Bind ViewModel.TradeProgressDetail,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
</StackPanel>
</StackPanel></Border>
<Expander x:Name="TradeAdvancedSearchExpander" Header="高级搜索选项" IsExpanded="{x:Bind ViewModel.TradeAdvancedEditing,Mode=TwoWay}" IsEnabled="{x:Bind ViewModel.TradeSelectionEnabled,Mode=OneWay}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" AutomationProperties.AutomationId="TradeAdvancedSearchExpander" ToolTipService.ToolTip="全部可选;留空按当前位置搜索全部合规货源"><Border Padding="4,6,4,4" x:Name="TradeAdvancedOptions" AutomationProperties.AutomationId="TradeAdvancedOptions"><StackPanel Spacing="18">
<Button Content="重新读取玩家参数" Command="{x:Bind ViewModel.UsePlayerValuesCommand}" HorizontalAlignment="Right"/>
<TextBlock Text="全部可选;留空按当前位置计算接驳成本,自动比较范围内全部合规货源和交付市场。只有填写的字段才限制搜索。" Style="{StaticResource MutedText}" FontSize="12" TextWrapping="Wrap"/>
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<TextBox Header="货源星系(可选)" Text="{x:Bind ViewModel.TradeSourceSystemText,Mode=TwoWay}" PlaceholderText="留空:范围内全部星系"/>
<TextBox Grid.Column="1" Header="交付星系(可选)" Text="{x:Bind ViewModel.TradeDestinationSystemText,Mode=TwoWay}" PlaceholderText="留空:自动匹配市场或 CG 交付星系"/>
</Grid>
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="180"/></Grid.ColumnDefinitions>
<ComboBox Header="采购站点(可选)" ItemsSource="{x:Bind ViewModel.Stations,Mode=OneWay}" SelectedItem="{x:Bind ViewModel.TradeSourceSearchStation,Mode=TwoWay}" Text="{x:Bind ViewModel.TradeSourceSearchText,Mode=TwoWay}" PlaceholderText="留空:自动搜索全部货源" DisplayMemberPath="DisplayName" IsEditable="True" IsTextSearchEnabled="True" HorizontalAlignment="Stretch" x:Name="AutomaticTradeSource" AutomationProperties.AutomationId="AutomaticTradeSource"/>
<ComboBox Grid.Column="1" Header="交付站点(可选)" ItemsSource="{x:Bind ViewModel.Stations,Mode=OneWay}" SelectedItem="{x:Bind ViewModel.TradeDestinationSearchStation,Mode=TwoWay}" Text="{x:Bind ViewModel.TradeDestinationSearchText,Mode=TwoWay}" PlaceholderText="留空:自动搜索市场或 CG 交付站" DisplayMemberPath="DisplayName" IsEditable="True" IsTextSearchEnabled="True" HorizontalAlignment="Stretch" x:Name="AutomaticTradeDestination" AutomationProperties.AutomationId="AutomaticTradeDestination"/>
<ComboBox Grid.Column="2" Header="跑商方式" SelectedIndex="{x:Bind ViewModel.AutomaticModeIndex,Mode=TwoWay}" HorizontalAlignment="Stretch" x:Name="AutomaticTradeMode" AutomationProperties.AutomationId="AutomaticTradeMode"><x:String>普通贸易</x:String><x:String>CG 供货</x:String></ComboBox>
</Grid>
<TextBox Header="商品(可选)" Text="{x:Bind ViewModel.TradeCommoditySearchText,Mode=TwoWay}" Visibility="{x:Bind ViewModel.AutomaticCgVisibility,Mode=OneWay}" PlaceholderText="留空使用活动全部接收商品;多个商品用逗号分隔" x:Name="TradeCommoditySearchInput" AutomationProperties.AutomationId="TradeCommoditySearchInput"/>
<TextBlock Text="CG 供货模式 · 活动与接收商品待核;额外奖励不计入预计收益。" Visibility="{x:Bind ViewModel.AutomaticCgVisibility,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
<CheckBox Content="手动两站跑商时,返程也选择有利润的货物" IsChecked="{x:Bind ViewModel.AutomaticReturnTrade,Mode=TwoWay}"/>
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<NumberBox Header="运营与保险保留 / Cr" Value="{x:Bind ViewModel.Reserve,Mode=TwoWay}" Minimum="0" Maximum="1000000000000000" SpinButtonPlacementMode="Hidden"/>
<ComboBox Grid.Column="1" Header="风险偏好" SelectedIndex="{x:Bind ViewModel.RiskIndex,Mode=TwoWay}" HorizontalAlignment="Stretch"><x:String>保守 · 高 / 中安</x:String><x:String>均衡 · 接受低安</x:String><x:String>进取 · 允许无政府</x:String></ComboBox>
<ComboBox x:Name="TradeRequiredPadInput" Grid.Column="2" Header="停机坪附加要求" SelectedIndex="{x:Bind ViewModel.PadIndex,Mode=TwoWay}" HorizontalAlignment="Stretch" IsEnabled="{x:Bind ViewModel.TradeShipPadKnown,Mode=OneWay}" AutomationProperties.AutomationId="TradeRequiredPadInput"><ComboBoxItem Content="小型 S" IsEnabled="{x:Bind ViewModel.TradeSmallPadOptionAvailable,Mode=OneWay}"/><ComboBoxItem Content="中型 M" IsEnabled="{x:Bind ViewModel.TradeMediumPadOptionAvailable,Mode=OneWay}"/><ComboBoxItem Content="大型 L" IsEnabled="{x:Bind ViewModel.TradeLargePadOptionAvailable,Mode=OneWay}"/></ComboBox>
</Grid>
<TextBlock Text="{x:Bind ViewModel.TradeEffectivePadSummary,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
<StackPanel x:Name="TradeSourceKindsPanel" Spacing="8" AutomationProperties.AutomationId="TradeSourceKindsPanel">
<Grid ColumnSpacing="12"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><TextBlock Text="采购货源类型 · 可多选" FontWeight="SemiBold" VerticalAlignment="Center"/><StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="8"><Button Content="全部已知类型" Command="{x:Bind ViewModel.SelectKnownTradeSourcesCommand}" Padding="10,5"/><Button Content="清空" Command="{x:Bind ViewModel.ClearTradeSourcesCommand}" Padding="10,5"/></StackPanel></Grid>
<ItemsControl x:Name="TradeSourceKindOptions" ItemsSource="{x:Bind ViewModel.TradeSourceKinds}" AutomationProperties.AutomationId="TradeSourceKindOptions"><ItemsControl.ItemsPanel><ItemsPanelTemplate><VariableSizedWrapGrid Orientation="Horizontal" ItemWidth="160" ItemHeight="38"/></ItemsPanelTemplate></ItemsControl.ItemsPanel><ItemsControl.ItemTemplate><DataTemplate x:DataType="vm:TradeSourceKindOptionViewModel"><CheckBox Content="{x:Bind Label}" IsChecked="{x:Bind IsSelected,Mode=TwoWay}" ToolTipService.ToolTip="{x:Bind Label}"/></DataTemplate></ItemsControl.ItemTemplate></ItemsControl>
<TextBlock Text="{x:Bind ViewModel.TradeSourceSelectionSummary,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/><TextBlock Text="只筛选采购站;交付目的地不受货源类型限制,仍须满足飞船停机坪、安保与航程要求。" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
</StackPanel>
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<NumberBox Header="单航段最大距离 / ly" Value="{x:Bind ViewModel.MaxDistance,Mode=TwoWay}" Minimum="1" Maximum="1000"/><NumberBox Grid.Column="1" Header="行情时效 / h" Value="{x:Bind ViewModel.MaxAgeHours,Mode=TwoWay}" Minimum=".0167" Maximum="168"/><NumberBox Grid.Column="2" Header="最远超巡距离 / ls" Value="{x:Bind ViewModel.MaxArrival,Mode=TwoWay}" Minimum="1" Maximum="10000000"/>
</Grid>
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><ToggleSwitch Header="路线形式" IsOn="{x:Bind ViewModel.Loop,Mode=TwoWay}" OnContent="返回起始站点的环线" OffContent="开放航线"/><NumberBox Grid.Column="1" Header="最多航段" Value="{x:Bind ViewModel.MaxLegs,Mode=TwoWay}" Minimum="1" Maximum="8" SpinButtonPlacementMode="Inline"/></Grid>
<Expander Header="时间、费用与站点筛选" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"><StackPanel Spacing="14">
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><NumberBox Header="每次跃迁 / 分钟" Value="{x:Bind ViewModel.JumpMinutes,Mode=TwoWay}" Minimum=".1" Maximum="30"/><NumberBox Grid.Column="1" Header="每站停靠 / 分钟" Value="{x:Bind ViewModel.DockMinutes,Mode=TwoWay}" Minimum=".1" Maximum="120"/><NumberBox Grid.Column="2" Header="每跳费用 / Cr" Value="{x:Bind ViewModel.CostPerJump,Mode=TwoWay}" Minimum="0" Maximum="10000000"/><NumberBox Grid.Column="3" Header="每分钟其他费用 / Cr" Value="{x:Bind ViewModel.CostPerMinute,Mode=TwoWay}" Minimum="0" Maximum="10000000"/></Grid>
<CheckBox IsChecked="{x:Bind ViewModel.AllowUnknown,Mode=TwoWay}"><TextBlock Text="允许未知安保或到站距离;停机坪仍须核实。" TextWrapping="Wrap"/></CheckBox>
</StackPanel></Expander>
</StackPanel></Border></Expander>
<StackPanel Spacing="6"><Grid ColumnSpacing="16"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><TextBlock Text="推荐方案" Style="{StaticResource SectionTitle}"/><TextBlock Grid.Column="1" Text="{x:Bind ViewModel.TradePlanningStatus,Mode=OneWay}" Style="{StaticResource MutedText}" VerticalAlignment="Center" TextWrapping="Wrap"/></Grid><TextBlock Text="仅比较当前缓存中满足范围与时效的站点,收益与航程均为估算;风险等级依据安保、行情时效与需求评估。" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/><TextBlock Text="{x:Bind ViewModel.TradeCommunityGoalStatus,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/></StackPanel>
<Border Visibility="{x:Bind ViewModel.TradeEmptyVisibility,Mode=OneWay}" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="1" CornerRadius="10" Padding="26,30"><StackPanel Spacing="8" HorizontalAlignment="Center"><controls:GameIcon IconKey="FeatureRoute" Width="32" Height="32" HorizontalAlignment="Center"/><TextBlock Text="{x:Bind ViewModel.TradeEmptyTitle,Mode=OneWay}" FontSize="17" FontWeight="SemiBold" HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center"/><TextBlock Text="{x:Bind ViewModel.TradeEmptyDescription,Mode=OneWay}" Style="{StaticResource MutedText}" HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center" MaxWidth="680"/></StackPanel></Border>
<ListView ItemsSource="{x:Bind ViewModel.TradeCandidates}" SelectedItem="{x:Bind ViewModel.SelectedTradeCandidate,Mode=TwoWay}" IsEnabled="{x:Bind ViewModel.TradeSelectionEnabled,Mode=OneWay}" SelectionMode="Single" Padding="0" HorizontalContentAlignment="Stretch" ScrollViewer.VerticalScrollBarVisibility="Disabled" x:Name="TradeRouteCandidates" AutomationProperties.AutomationId="TradeRouteCandidates">
<ListView.ItemContainerStyle><Style TargetType="ListViewItem"><Setter Property="HorizontalContentAlignment" Value="Stretch"/><Setter Property="Padding" Value="0"/><Setter Property="Margin" Value="0,0,0,10"/><Setter Property="CornerRadius" Value="11"/></Style></ListView.ItemContainerStyle>
<ListView.ItemTemplate><DataTemplate x:DataType="vm:TradeRouteCandidateViewModel">
<Border Background="{StaticResource PanelBrush}" BorderBrush="{x:Bind CardBorder,Mode=OneWay}" BorderThickness="1.5" CornerRadius="11" Padding="18,15" ToolTipService.ToolTip="{x:Bind RouteSummary}">
<Grid ColumnSpacing="20"><Grid.ColumnDefinitions><ColumnDefinition Width="48"/><ColumnDefinition Width="1.15*"/><ColumnDefinition Width="1.05*"/></Grid.ColumnDefinitions>
<StackPanel VerticalAlignment="Center" Spacing="5"><TextBlock Text="{x:Bind Rank}" FontSize="31" FontWeight="SemiBold" Foreground="{x:Bind RouteAccentBrush,Mode=OneWay}"/><TextBlock Text="{x:Bind Recommendation}" FontSize="10" Foreground="{StaticResource MutedBrush}"/></StackPanel>
<StackPanel Grid.Column="1" Spacing="10" VerticalAlignment="Center"><Border Visibility="{x:Bind CommunityGoalVisibility,Mode=OneWay}" Background="{x:Bind CommunityGoalBadgeBackground}" BorderBrush="{x:Bind RouteAccentBrush,Mode=OneWay}" BorderThickness="1" CornerRadius="5" Padding="8,4" HorizontalAlignment="Left" ToolTipService.ToolTip="{x:Bind CommunityGoalDescription}"><TextBlock Text="{x:Bind CommunityGoalLabel}" Foreground="{x:Bind RouteAccentBrush,Mode=OneWay}" FontSize="11" TextWrapping="Wrap"/></Border><Grid ColumnSpacing="12"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<StackPanel Spacing="4"><TextBlock Text="{x:Bind Origin}" FontSize="16" FontWeight="SemiBold" TextTrimming="CharacterEllipsis"/><TextBlock Text="{x:Bind OriginDetail}" Style="{StaticResource MutedText}" FontSize="12" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap"/></StackPanel>
<StackPanel Grid.Column="1" Spacing="5" VerticalAlignment="Center"><TextBlock Text="{x:Bind RouteKind}" FontSize="10" Foreground="{StaticResource MutedBrush}"/><FontIcon Glyph="" FontSize="19" Foreground="{x:Bind RouteAccentBrush,Mode=OneWay}"/></StackPanel>
<StackPanel Grid.Column="2" Spacing="4"><TextBlock Text="{x:Bind Destination}" FontSize="16" FontWeight="SemiBold" TextTrimming="CharacterEllipsis"/><TextBlock Text="{x:Bind DestinationDetail}" Style="{StaticResource MutedText}" FontSize="12" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap"/></StackPanel>
</Grid><TextBlock Text="{x:Bind Cargo}" ToolTipService.ToolTip="{x:Bind CargoDetails}" Foreground="{x:Bind RouteAccentBrush,Mode=OneWay}" FontSize="12" TextWrapping="Wrap"/><TextBlock Text="{x:Bind Approach}" Style="{StaticResource MutedText}" FontSize="10"/></StackPanel>
<Grid Grid.Column="2" Padding="18,0,0,0" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="1,0,0,0" RowSpacing="12"><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
<Grid ColumnSpacing="10"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><StackPanel Orientation="Horizontal" Spacing="6" VerticalAlignment="Center"><TextBlock Text="{x:Bind Hourly}" ToolTipService.ToolTip="{x:Bind HourlyExact}" FontSize="28" FontWeight="SemiBold" Foreground="{StaticResource TealBrush}"/><TextBlock Text="Cr/h · 预计" FontSize="12" Foreground="{StaticResource TealBrush}" VerticalAlignment="Bottom" Margin="0,0,0,5"/></StackPanel><Border Grid.Column="1" BorderBrush="{x:Bind RiskBrush}" BorderThickness="1" CornerRadius="13" Padding="9,4" VerticalAlignment="Center"><TextBlock Text="{x:Bind Risk}" Foreground="{x:Bind RiskBrush}" FontSize="11"/></Border></Grid>
<Grid Grid.Row="1" ColumnSpacing="14"><Grid.ColumnDefinitions><ColumnDefinition Width="1.2*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><StackPanel Spacing="4"><TextBlock Text="整条路线净利润" Style="{StaticResource MutedText}" FontSize="10"/><TextBlock Text="{x:Bind Profit}" FontWeight="SemiBold" FontSize="13"/></StackPanel><StackPanel Grid.Column="1" Spacing="4"><TextBlock Text="预计用时" Style="{StaticResource MutedText}" FontSize="10"/><TextBlock Text="{x:Bind Duration}" FontWeight="SemiBold" FontSize="13"/></StackPanel><StackPanel Grid.Column="2" Spacing="4"><TextBlock Text="总航程" Style="{StaticResource MutedText}" FontSize="10"/><StackPanel Orientation="Horizontal" Spacing="5"><TextBlock Text="{x:Bind Distance}" FontWeight="SemiBold" FontSize="12"/><TextBlock Text="{x:Bind Jumps}" FontSize="11" Foreground="{StaticResource MutedBrush}"/></StackPanel></StackPanel></Grid>
</Grid>
</Grid>
</Border>
</DataTemplate></ListView.ItemTemplate>
</ListView>
<Border x:Name="TradeRunCard" Style="{StaticResource CardStyle}" Padding="22,18"><StackPanel Spacing="16">
<Grid><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><StackPanel Spacing="4"><TextBlock Text="执行概览" Style="{StaticResource SectionTitle}"/><TextBlock Text="{x:Bind ViewModel.TradeSelectedRouteSummary,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="12" TextTrimming="CharacterEllipsis"/></StackPanel><Button x:Name="ExecuteTradePlanButton" Grid.Column="1" Style="{StaticResource PrimaryButton}" MinWidth="148" VerticalAlignment="Center" controls:AsyncAction.Command="{x:Bind ViewModel.ExecuteTradePlanCommand}" controls:AsyncAction.CancelCommand="{x:Bind ViewModel.StopRunCommand}" controls:AsyncAction.IsRunning="{x:Bind ViewModel.RunActive,Mode=OneWay}" AutomationProperties.Name="开始执行跑商路线" AutomationProperties.AutomationId="ExecuteTradePlanButton"><StackPanel Orientation="Horizontal" Spacing="9"><FontIcon Glyph="" FontSize="15"/><TextBlock Text="{x:Bind ViewModel.TradeExecutionActionLabel,Mode=OneWay}"/></StackPanel></Button></Grid>
<Grid ColumnSpacing="20"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="1.2*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><StackPanel Spacing="6"><TextBlock Text="已完成轮数" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.CompletedTradeRounds,Mode=OneWay}" FontSize="24" FontWeight="SemiBold"/></StackPanel><StackPanel Grid.Column="1" Spacing="6"><TextBlock Text="本次已确认净利润" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.TradeConfirmedProfit,Mode=OneWay}" Foreground="{StaticResource TealBrush}" FontSize="24" FontWeight="SemiBold"/></StackPanel><StackPanel Grid.Column="2" Spacing="6"><TextBlock Text="运行时长" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.TradeElapsed,Mode=OneWay}" FontSize="24" FontWeight="SemiBold"/></StackPanel><StackPanel Grid.Column="3" Spacing="6"><TextBlock Text="当前阶段" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.RunStatus,Mode=OneWay}" FontSize="20" FontWeight="SemiBold" TextTrimming="CharacterEllipsis"/></StackPanel></Grid>
<TextBlock Text="{x:Bind ViewModel.TradeExecutionPolicy,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/><Border Height="1" Background="{StaticResource PanelStrokeBrush}"/><TextBlock Text="{x:Bind ViewModel.AutomaticSupplySummary,Mode=OneWay}" AutomationProperties.AutomationId="AutomaticSupplySummary" TextWrapping="Wrap" FontSize="12" Foreground="#C3A6FF"/><TextBlock Text="{x:Bind ViewModel.RunMessage,Mode=OneWay}" TextWrapping="Wrap" FontSize="12" Foreground="{StaticResource MutedBrush}"/><Button Content="更新插件并继续" AutomationProperties.AutomationId="UpdateAndStartAutomaticTradeButton" Command="{x:Bind ViewModel.UpdateAndStartAutomaticTradeCommand}" Visibility="{x:Bind ViewModel.AutomaticUpdateVisibility,Mode=OneWay}" HorizontalAlignment="Left"/>
</StackPanel></Border>
<Expander Header="查看完整路线与逐站货单" Visibility="{x:Bind ViewModel.TradePlanVisibility,Mode=OneWay}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"><StackPanel Spacing="16"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><TextBlock Text="{x:Bind ViewModel.PlanInfo,Mode=OneWay}" FontWeight="SemiBold" VerticalAlignment="Center"/><Button Grid.Column="1" Content="导出路线 JSON" Command="{x:Bind ViewModel.ExportPlanCommand}"/></Grid><controls:RouteMap Plan="{x:Bind ViewModel.Plan,Mode=OneWay}" Height="220"/><ItemsControl ItemsSource="{x:Bind ViewModel.Plan.Legs,Mode=OneWay}"><ItemsControl.ItemTemplate><DataTemplate x:DataType="models:TradeLeg"><Border Background="{StaticResource PanelAltBrush}" CornerRadius="8" Padding="16" Margin="0,0,0,8"><StackPanel Spacing="7"><TextBlock Text="{x:Bind Title}" FontWeight="SemiBold"/><TextBlock Text="{x:Bind Systems}" Style="{StaticResource MutedText}"/><TextBlock Text="{x:Bind CargoSummary}" Foreground="{StaticResource AccentBrush}" TextWrapping="Wrap"/><TextBlock Text="{x:Bind Metrics}" Style="{StaticResource MutedText}" FontSize="11"/></StackPanel></Border></DataTemplate></ItemsControl.ItemTemplate></ItemsControl><TextBlock Text="{x:Bind ViewModel.PlanWarnings,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/></StackPanel></Expander>
</StackPanel>
</ScrollViewer>
</Page>
<Page x:Class="XFEEDToolBox.Views.PlannerPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:models="using:XFEEDToolBox.Core.Models" xmlns:vm="using:XFEEDToolBox.ViewModels" xmlns:controls="using:XFEEDToolBox.Controls">
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
<StackPanel Spacing="18" Padding="0,8,8,28">
<StackPanel Spacing="4"><TextBlock Text="跑商" Style="{StaticResource PageTitle}"/><TextBlock Text="投入资金,选择更值得飞的路线。" Style="{StaticResource MutedText}" FontSize="15"/></StackPanel>
<Border Style="{StaticResource CardStyle}" Padding="22,20"><StackPanel Spacing="14">
<Grid ColumnSpacing="20"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="1.2*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<TextBlock Text="投入资金" FontSize="18" FontWeight="SemiBold" VerticalAlignment="Center"/>
<Grid Grid.Column="1" ColumnSpacing="8"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
<NumberBox Value="{x:Bind ViewModel.TradeInvestment,Mode=TwoWay}" IsEnabled="{x:Bind ViewModel.TradeSelectionEnabled,Mode=OneWay}" Minimum="0" Maximum="1000000000000000" SpinButtonPlacementMode="Hidden" FontSize="19" HorizontalAlignment="Stretch" AutomationProperties.Name="投入资金,单位 Cr" x:Name="TradeInvestmentAmount" AutomationProperties.AutomationId="TradeInvestmentAmount"/>
<Button Grid.Column="1" Content="全部" Command="{x:Bind ViewModel.UseAllTradeFundsCommand}" IsEnabled="{x:Bind ViewModel.TradeSelectionEnabled,Mode=OneWay}" Padding="13,8" ToolTipService.ToolTip="使用留出运营与保险资金后的全部余额"/>
</Grid>
<Button Grid.Column="2" x:Name="CalculateTradeRoutesButton" Style="{StaticResource PrimaryButton}" Padding="22,12" HorizontalAlignment="Stretch" controls:AsyncAction.Command="{x:Bind ViewModel.CalculateCommand}" controls:AsyncAction.CancelCommand="{x:Bind ViewModel.CalculateCancelCommand}" controls:AsyncAction.IsRunning="{x:Bind ViewModel.IsBusy,Mode=OneWay}" AutomationProperties.AutomationId="CalculateTradeRoutesButton"><StackPanel Orientation="Horizontal" Spacing="10"><controls:GameIcon IconKey="FeatureRoute" Width="20" Height="20"/><TextBlock Text="规划路线" FontSize="17"/></StackPanel></Button>
</Grid>
<Grid ColumnSpacing="14"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<ComboBox x:Name="TradePlanningModeInput" Header="规划类型" SelectedIndex="{x:Bind ViewModel.TradePlanningModeIndex,Mode=TwoWay}" IsEnabled="{x:Bind ViewModel.TradeSelectionEnabled,Mode=OneWay}" MinWidth="150" AutomationProperties.Name="规划类型" AutomationProperties.AutomationId="TradePlanningModeInput"><x:String>常规跑商</x:String><x:String>CG 供货</x:String></ComboBox>
<TextBlock Grid.Column="1" Text="{x:Bind ViewModel.TradePlanningModeDescription,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="12" TextWrapping="Wrap" VerticalAlignment="Bottom" Margin="0,0,0,8"/>
</Grid>
<Grid ColumnSpacing="14"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="160"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
<AutoSuggestBox x:Name="TradeRegionCenterInput" Header="中心星系" Text="{x:Bind ViewModel.TradeRegionCenterText,Mode=TwoWay}" PlaceholderText="留空跟随当前位置" TextMemberPath="Name" DisplayMemberPath="Name" QueryIcon="Find" IsEnabled="{x:Bind ViewModel.TradeRegionEditable,Mode=OneWay}" TextChanged="TradeRegionCenterChanged" SuggestionChosen="TradeRegionCenterChosen" QuerySubmitted="TradeRegionCenterSubmitted" AutomationProperties.AutomationId="TradeRegionCenterInput"/>
<NumberBox x:Name="TradeRegionRadiusInput" Grid.Column="1" Header="范围半径 / ly" Value="{x:Bind ViewModel.Radius,Mode=TwoWay}" Minimum="1" Maximum="100000" SpinButtonPlacementMode="Hidden" IsEnabled="{x:Bind ViewModel.TradeRegionEditable,Mode=OneWay}" LostFocus="TradeRegionRadiusCommitted" KeyDown="TradeRegionRadiusKeyDown" AutomationProperties.AutomationId="TradeRegionRadiusInput"/>
<Button x:Name="FollowCurrentTradeRegionButton" Grid.Column="2" Content="跟随当前位置" Command="{x:Bind ViewModel.FollowCurrentTradeRegionCommand}" IsEnabled="{x:Bind ViewModel.TradeRegionEditable,Mode=OneWay}" VerticalAlignment="Bottom" Padding="14,10" AutomationProperties.AutomationId="FollowCurrentTradeRegionButton"/>
</Grid>
<TextBlock Text="{x:Bind ViewModel.TradeRegionStatus,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
<StackPanel Orientation="Horizontal" Spacing="22"><StackPanel Orientation="Horizontal" Spacing="8"><TextBlock Text="{x:Bind ViewModel.TradeShipName,Mode=OneWay}" Style="{StaticResource MutedText}"/></StackPanel><TextBlock Text="{x:Bind ViewModel.TradeCargoSummary,Mode=OneWay}" Style="{StaticResource MutedText}"/><TextBlock Text="{x:Bind ViewModel.TradeJumpSummary,Mode=OneWay}" Style="{StaticResource MutedText}" ToolTipService.ToolTip="按 Journal 最大跳距的 80% 保守估算,实际满载航程仍由游戏航线确认。"/></StackPanel>
<TextBlock Text="{x:Bind ViewModel.TradeShipPadSummary,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
<Grid ColumnSpacing="12"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><TextBlock Text="{x:Bind ViewModel.TradeFundsSummary,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/><TextBlock Grid.Column="1" Text="{x:Bind ViewModel.TradeInvestmentMode,Mode=OneWay}" Foreground="{StaticResource AccentBrush}" FontSize="11"/></Grid>
<StackPanel x:Name="TradePlanningProgressPanel" Spacing="7" Visibility="{x:Bind ViewModel.TradeProgressVisibility,Mode=OneWay}" AutomationProperties.AutomationId="TradePlanningProgressPanel">
<Grid ColumnSpacing="16"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><TextBlock Text="{x:Bind ViewModel.TradeProgressStage,Mode=OneWay}" FontWeight="SemiBold" TextWrapping="Wrap"/><TextBlock Grid.Column="1" Text="{x:Bind ViewModel.TradeProgressCount,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" VerticalAlignment="Center"/></Grid>
<ProgressBar x:Name="TradePlanningProgressBar" Minimum="0" Maximum="100" Value="{x:Bind ViewModel.TradeProgressPercent,Mode=OneWay}" IsIndeterminate="{x:Bind ViewModel.TradeProgressIsIndeterminate,Mode=OneWay}" AutomationProperties.Name="当前规划阶段进度" AutomationProperties.AutomationId="TradePlanningProgressBar"/>
<TextBlock Text="{x:Bind ViewModel.TradeProgressDetail,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
</StackPanel>
</StackPanel></Border>
<Expander x:Name="TradeAdvancedSearchExpander" Header="高级搜索选项" IsExpanded="{x:Bind ViewModel.TradeAdvancedEditing,Mode=TwoWay}" IsEnabled="{x:Bind ViewModel.TradeSelectionEnabled,Mode=OneWay}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" AutomationProperties.AutomationId="TradeAdvancedSearchExpander" ToolTipService.ToolTip="全部可选;留空按当前位置搜索全部合规货源"><Border Padding="4,6,4,4" x:Name="TradeAdvancedOptions" AutomationProperties.AutomationId="TradeAdvancedOptions"><StackPanel Spacing="18">
<Button Content="重新读取玩家参数" Command="{x:Bind ViewModel.UsePlayerValuesCommand}" HorizontalAlignment="Right"/>
<TextBlock Text="全部可选;留空按当前位置计算接驳成本,自动比较范围内全部合规货源和交付市场。只有填写的字段才限制搜索。" Style="{StaticResource MutedText}" FontSize="12" TextWrapping="Wrap"/>
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<TextBox Header="货源星系(可选)" Text="{x:Bind ViewModel.TradeSourceSystemText,Mode=TwoWay}" PlaceholderText="留空:范围内全部星系"/>
<TextBox Grid.Column="1" Header="交付星系(可选)" Text="{x:Bind ViewModel.TradeDestinationSystemText,Mode=TwoWay}" PlaceholderText="留空:自动匹配市场或 CG 交付星系"/>
</Grid>
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="180"/></Grid.ColumnDefinitions>
<ComboBox Header="采购站点(可选)" ItemsSource="{x:Bind ViewModel.Stations,Mode=OneWay}" SelectedItem="{x:Bind ViewModel.TradeSourceSearchStation,Mode=TwoWay}" Text="{x:Bind ViewModel.TradeSourceSearchText,Mode=TwoWay}" PlaceholderText="留空:自动搜索全部货源" DisplayMemberPath="DisplayName" IsEditable="True" IsTextSearchEnabled="True" HorizontalAlignment="Stretch" x:Name="AutomaticTradeSource" AutomationProperties.AutomationId="AutomaticTradeSource"/>
<ComboBox Grid.Column="1" Header="交付站点(可选)" ItemsSource="{x:Bind ViewModel.Stations,Mode=OneWay}" SelectedItem="{x:Bind ViewModel.TradeDestinationSearchStation,Mode=TwoWay}" Text="{x:Bind ViewModel.TradeDestinationSearchText,Mode=TwoWay}" PlaceholderText="留空:自动搜索市场或 CG 交付站" DisplayMemberPath="DisplayName" IsEditable="True" IsTextSearchEnabled="True" HorizontalAlignment="Stretch" x:Name="AutomaticTradeDestination" AutomationProperties.AutomationId="AutomaticTradeDestination"/>
<ComboBox Grid.Column="2" Header="跑商方式" SelectedIndex="{x:Bind ViewModel.AutomaticModeIndex,Mode=TwoWay}" HorizontalAlignment="Stretch" x:Name="AutomaticTradeMode" AutomationProperties.AutomationId="AutomaticTradeMode"><x:String>普通贸易</x:String><x:String>CG 供货</x:String></ComboBox>
</Grid>
<TextBox Header="商品(可选)" Text="{x:Bind ViewModel.TradeCommoditySearchText,Mode=TwoWay}" Visibility="{x:Bind ViewModel.AutomaticCgVisibility,Mode=OneWay}" PlaceholderText="留空使用活动全部接收商品;多个商品用逗号分隔" x:Name="TradeCommoditySearchInput" AutomationProperties.AutomationId="TradeCommoditySearchInput"/>
<TextBlock Text="CG 供货模式 · 活动与接收商品待核;额外奖励不计入预计收益。" Visibility="{x:Bind ViewModel.AutomaticCgVisibility,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
<CheckBox Content="手动两站跑商时,返程也选择有利润的货物" IsChecked="{x:Bind ViewModel.AutomaticReturnTrade,Mode=TwoWay}"/>
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<NumberBox Header="运营与保险保留 / Cr" Value="{x:Bind ViewModel.Reserve,Mode=TwoWay}" Minimum="0" Maximum="1000000000000000" SpinButtonPlacementMode="Hidden"/>
<ComboBox Grid.Column="1" Header="风险偏好" SelectedIndex="{x:Bind ViewModel.RiskIndex,Mode=TwoWay}" HorizontalAlignment="Stretch"><x:String>保守 · 高 / 中安</x:String><x:String>均衡 · 接受低安</x:String><x:String>进取 · 允许无政府</x:String></ComboBox>
<ComboBox x:Name="TradeRequiredPadInput" Grid.Column="2" Header="停机坪附加要求" SelectedIndex="{x:Bind ViewModel.PadIndex,Mode=TwoWay}" HorizontalAlignment="Stretch" IsEnabled="{x:Bind ViewModel.TradeShipPadKnown,Mode=OneWay}" AutomationProperties.AutomationId="TradeRequiredPadInput"><ComboBoxItem Content="小型 S" IsEnabled="{x:Bind ViewModel.TradeSmallPadOptionAvailable,Mode=OneWay}"/><ComboBoxItem Content="中型 M" IsEnabled="{x:Bind ViewModel.TradeMediumPadOptionAvailable,Mode=OneWay}"/><ComboBoxItem Content="大型 L" IsEnabled="{x:Bind ViewModel.TradeLargePadOptionAvailable,Mode=OneWay}"/></ComboBox>
</Grid>
<TextBlock Text="{x:Bind ViewModel.TradeEffectivePadSummary,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
<StackPanel x:Name="TradeSourceKindsPanel" Spacing="8" AutomationProperties.AutomationId="TradeSourceKindsPanel">
<Grid ColumnSpacing="12"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><TextBlock Text="采购货源类型 · 可多选" FontWeight="SemiBold" VerticalAlignment="Center"/><StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="8"><Button Content="全部已知类型" Command="{x:Bind ViewModel.SelectKnownTradeSourcesCommand}" Padding="10,5"/><Button Content="清空" Command="{x:Bind ViewModel.ClearTradeSourcesCommand}" Padding="10,5"/></StackPanel></Grid>
<ItemsControl x:Name="TradeSourceKindOptions" ItemsSource="{x:Bind ViewModel.TradeSourceKinds}" AutomationProperties.AutomationId="TradeSourceKindOptions"><ItemsControl.ItemsPanel><ItemsPanelTemplate><VariableSizedWrapGrid Orientation="Horizontal" ItemWidth="160" ItemHeight="38"/></ItemsPanelTemplate></ItemsControl.ItemsPanel><ItemsControl.ItemTemplate><DataTemplate x:DataType="vm:TradeSourceKindOptionViewModel"><CheckBox Content="{x:Bind Label}" IsChecked="{x:Bind IsSelected,Mode=TwoWay}" ToolTipService.ToolTip="{x:Bind Label}"/></DataTemplate></ItemsControl.ItemTemplate></ItemsControl>
<TextBlock Text="{x:Bind ViewModel.TradeSourceSelectionSummary,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/><TextBlock Text="只筛选采购站;交付目的地不受货源类型限制,仍须满足飞船停机坪、安保与航程要求。" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/>
</StackPanel>
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<NumberBox Header="单航段最大距离 / ly" Value="{x:Bind ViewModel.MaxDistance,Mode=TwoWay}" Minimum="1" Maximum="1000"/><NumberBox Grid.Column="1" Header="行情时效 / h" Value="{x:Bind ViewModel.MaxAgeHours,Mode=TwoWay}" Minimum=".0167" Maximum="168"/><NumberBox Grid.Column="2" Header="最远超巡距离 / ls" Value="{x:Bind ViewModel.MaxArrival,Mode=TwoWay}" Minimum="1" Maximum="10000000"/>
</Grid>
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><ToggleSwitch Header="路线形式" IsOn="{x:Bind ViewModel.Loop,Mode=TwoWay}" OnContent="返回起始站点的环线" OffContent="开放航线"/><NumberBox Grid.Column="1" Header="最多航段" Value="{x:Bind ViewModel.MaxLegs,Mode=TwoWay}" Minimum="1" Maximum="8" SpinButtonPlacementMode="Inline"/></Grid>
<Expander Header="时间、费用与站点筛选" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"><StackPanel Spacing="14">
<Grid ColumnSpacing="18"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><NumberBox Header="每次跃迁 / 分钟" Value="{x:Bind ViewModel.JumpMinutes,Mode=TwoWay}" Minimum=".1" Maximum="30"/><NumberBox Grid.Column="1" Header="每站停靠 / 分钟" Value="{x:Bind ViewModel.DockMinutes,Mode=TwoWay}" Minimum=".1" Maximum="120"/><NumberBox Grid.Column="2" Header="每跳费用 / Cr" Value="{x:Bind ViewModel.CostPerJump,Mode=TwoWay}" Minimum="0" Maximum="10000000"/><NumberBox Grid.Column="3" Header="每分钟其他费用 / Cr" Value="{x:Bind ViewModel.CostPerMinute,Mode=TwoWay}" Minimum="0" Maximum="10000000"/></Grid>
<CheckBox IsChecked="{x:Bind ViewModel.AllowUnknown,Mode=TwoWay}"><TextBlock Text="允许未知安保或到站距离;停机坪仍须核实。" TextWrapping="Wrap"/></CheckBox>
</StackPanel></Expander>
</StackPanel></Border></Expander>
<StackPanel Spacing="6"><Grid ColumnSpacing="16"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><TextBlock Text="推荐方案" Style="{StaticResource SectionTitle}"/><TextBlock Grid.Column="1" Text="{x:Bind ViewModel.TradePlanningStatus,Mode=OneWay}" Style="{StaticResource MutedText}" VerticalAlignment="Center" TextWrapping="Wrap"/></Grid><TextBlock Text="仅比较当前缓存中满足范围与时效的站点,收益与航程均为估算;风险等级依据安保、行情时效与需求评估。" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/><TextBlock Text="{x:Bind ViewModel.TradeCommunityGoalStatus,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11" TextWrapping="Wrap"/></StackPanel>
<Border Visibility="{x:Bind ViewModel.TradeEmptyVisibility,Mode=OneWay}" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="1" CornerRadius="10" Padding="26,30"><StackPanel Spacing="8" HorizontalAlignment="Center"><controls:GameIcon IconKey="FeatureRoute" Width="32" Height="32" HorizontalAlignment="Center"/><TextBlock Text="{x:Bind ViewModel.TradeEmptyTitle,Mode=OneWay}" FontSize="17" FontWeight="SemiBold" HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center"/><TextBlock Text="{x:Bind ViewModel.TradeEmptyDescription,Mode=OneWay}" Style="{StaticResource MutedText}" HorizontalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center" MaxWidth="680"/></StackPanel></Border>
<ListView ItemsSource="{x:Bind ViewModel.TradeCandidates}" SelectedItem="{x:Bind ViewModel.SelectedTradeCandidate,Mode=TwoWay}" IsEnabled="{x:Bind ViewModel.TradeSelectionEnabled,Mode=OneWay}" SelectionMode="Single" Padding="0" HorizontalContentAlignment="Stretch" ScrollViewer.VerticalScrollBarVisibility="Disabled" x:Name="TradeRouteCandidates" AutomationProperties.AutomationId="TradeRouteCandidates">
<ListView.ItemContainerStyle><Style TargetType="ListViewItem"><Setter Property="HorizontalContentAlignment" Value="Stretch"/><Setter Property="Padding" Value="0"/><Setter Property="Margin" Value="0,0,0,10"/><Setter Property="CornerRadius" Value="11"/></Style></ListView.ItemContainerStyle>
<ListView.ItemTemplate><DataTemplate x:DataType="vm:TradeRouteCandidateViewModel">
<Border Background="{StaticResource PanelBrush}" BorderBrush="{x:Bind CardBorder,Mode=OneWay}" BorderThickness="1.5" CornerRadius="11" Padding="18,15" ToolTipService.ToolTip="{x:Bind RouteSummary}">
<Grid ColumnSpacing="20"><Grid.ColumnDefinitions><ColumnDefinition Width="48"/><ColumnDefinition Width="1.15*"/><ColumnDefinition Width="1.05*"/></Grid.ColumnDefinitions>
<StackPanel VerticalAlignment="Center" Spacing="5"><TextBlock Text="{x:Bind Rank}" FontSize="31" FontWeight="SemiBold" Foreground="{x:Bind RouteAccentBrush,Mode=OneWay}"/><TextBlock Text="{x:Bind Recommendation}" FontSize="10" Foreground="{StaticResource MutedBrush}"/></StackPanel>
<StackPanel Grid.Column="1" Spacing="10" VerticalAlignment="Center"><Border Visibility="{x:Bind CommunityGoalVisibility,Mode=OneWay}" Background="{x:Bind CommunityGoalBadgeBackground}" BorderBrush="{x:Bind RouteAccentBrush,Mode=OneWay}" BorderThickness="1" CornerRadius="5" Padding="8,4" HorizontalAlignment="Left" ToolTipService.ToolTip="{x:Bind CommunityGoalDescription}"><TextBlock Text="{x:Bind CommunityGoalLabel}" Foreground="{x:Bind RouteAccentBrush,Mode=OneWay}" FontSize="11" TextWrapping="Wrap"/></Border><Grid ColumnSpacing="12"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
<StackPanel Spacing="4"><TextBlock Text="{x:Bind Origin}" FontSize="16" FontWeight="SemiBold" TextTrimming="CharacterEllipsis"/><TextBlock Text="{x:Bind OriginDetail}" Style="{StaticResource MutedText}" FontSize="12" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap"/></StackPanel>
<StackPanel Grid.Column="1" Spacing="5" VerticalAlignment="Center"><TextBlock Text="{x:Bind RouteKind}" FontSize="10" Foreground="{StaticResource MutedBrush}"/><FontIcon Glyph="" FontSize="19" Foreground="{x:Bind RouteAccentBrush,Mode=OneWay}"/></StackPanel>
<StackPanel Grid.Column="2" Spacing="4"><TextBlock Text="{x:Bind Destination}" FontSize="16" FontWeight="SemiBold" TextTrimming="CharacterEllipsis"/><TextBlock Text="{x:Bind DestinationDetail}" Style="{StaticResource MutedText}" FontSize="12" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap"/></StackPanel>
</Grid><TextBlock Text="{x:Bind Cargo}" ToolTipService.ToolTip="{x:Bind CargoDetails}" Foreground="{x:Bind RouteAccentBrush,Mode=OneWay}" FontSize="12" TextWrapping="Wrap"/><TextBlock Text="{x:Bind Approach}" Style="{StaticResource MutedText}" FontSize="10"/></StackPanel>
<Grid Grid.Column="2" Padding="18,0,0,0" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="1,0,0,0" RowSpacing="12"><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
<Grid ColumnSpacing="10"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><StackPanel Orientation="Horizontal" Spacing="6" VerticalAlignment="Center"><TextBlock Text="{x:Bind Hourly}" ToolTipService.ToolTip="{x:Bind HourlyExact}" FontSize="28" FontWeight="SemiBold" Foreground="{StaticResource TealBrush}"/><TextBlock Text="Cr/h · 预计" FontSize="12" Foreground="{StaticResource TealBrush}" VerticalAlignment="Bottom" Margin="0,0,0,5"/></StackPanel><Border Grid.Column="1" BorderBrush="{x:Bind RiskBrush}" BorderThickness="1" CornerRadius="13" Padding="9,4" VerticalAlignment="Center"><TextBlock Text="{x:Bind Risk}" Foreground="{x:Bind RiskBrush}" FontSize="11"/></Border></Grid>
<Grid Grid.Row="1" ColumnSpacing="14"><Grid.ColumnDefinitions><ColumnDefinition Width="1.2*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><StackPanel Spacing="4"><TextBlock Text="整条路线净利润" Style="{StaticResource MutedText}" FontSize="10"/><TextBlock Text="{x:Bind Profit}" FontWeight="SemiBold" FontSize="13"/></StackPanel><StackPanel Grid.Column="1" Spacing="4"><TextBlock Text="预计用时" Style="{StaticResource MutedText}" FontSize="10"/><TextBlock Text="{x:Bind Duration}" FontWeight="SemiBold" FontSize="13"/></StackPanel><StackPanel Grid.Column="2" Spacing="4"><TextBlock Text="总航程" Style="{StaticResource MutedText}" FontSize="10"/><StackPanel Orientation="Horizontal" Spacing="5"><TextBlock Text="{x:Bind Distance}" FontWeight="SemiBold" FontSize="12"/><TextBlock Text="{x:Bind Jumps}" FontSize="11" Foreground="{StaticResource MutedBrush}"/></StackPanel></StackPanel></Grid>
</Grid>
</Grid>
</Border>
</DataTemplate></ListView.ItemTemplate>
</ListView>
<Border x:Name="TradeRunCard" Style="{StaticResource CardStyle}" Padding="22,18"><StackPanel Spacing="16">
<Grid><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><StackPanel Spacing="4"><TextBlock Text="执行概览" Style="{StaticResource SectionTitle}"/><TextBlock Text="{x:Bind ViewModel.TradeSelectedRouteSummary,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="12" TextTrimming="CharacterEllipsis"/></StackPanel><Button x:Name="ExecuteTradePlanButton" Grid.Column="1" Style="{StaticResource PrimaryButton}" MinWidth="148" VerticalAlignment="Center" controls:AsyncAction.Command="{x:Bind ViewModel.ExecuteTradePlanCommand}" controls:AsyncAction.CancelCommand="{x:Bind ViewModel.StopRunCommand}" controls:AsyncAction.IsRunning="{x:Bind ViewModel.RunActive,Mode=OneWay}" AutomationProperties.Name="开始执行跑商路线" AutomationProperties.AutomationId="ExecuteTradePlanButton"><StackPanel Orientation="Horizontal" Spacing="9"><FontIcon Glyph="" FontSize="15"/><TextBlock Text="{x:Bind ViewModel.TradeExecutionActionLabel,Mode=OneWay}"/></StackPanel></Button></Grid>
<Grid ColumnSpacing="20"><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="1.2*"/><ColumnDefinition Width="*"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><StackPanel Spacing="6"><TextBlock Text="已完成轮数" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.CompletedTradeRounds,Mode=OneWay}" FontSize="24" FontWeight="SemiBold"/></StackPanel><StackPanel Grid.Column="1" Spacing="6"><TextBlock Text="本次已确认净利润" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.TradeConfirmedProfit,Mode=OneWay}" Foreground="{StaticResource TealBrush}" FontSize="24" FontWeight="SemiBold"/></StackPanel><StackPanel Grid.Column="2" Spacing="6"><TextBlock Text="运行时长" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.TradeElapsed,Mode=OneWay}" FontSize="24" FontWeight="SemiBold"/></StackPanel><StackPanel Grid.Column="3" Spacing="6"><TextBlock Text="当前阶段" Style="{StaticResource MutedText}" FontSize="12"/><TextBlock Text="{x:Bind ViewModel.RunStatus,Mode=OneWay}" FontSize="20" FontWeight="SemiBold" TextTrimming="CharacterEllipsis"/></StackPanel></Grid>
<TextBlock Text="{x:Bind ViewModel.TradeExecutionPolicy,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/><Border Height="1" Background="{StaticResource PanelStrokeBrush}"/><TextBlock Text="{x:Bind ViewModel.AutomaticSupplySummary,Mode=OneWay}" AutomationProperties.AutomationId="AutomaticSupplySummary" TextWrapping="Wrap" FontSize="12" Foreground="#C3A6FF"/><TextBlock Text="{x:Bind ViewModel.RunMessage,Mode=OneWay}" TextWrapping="Wrap" FontSize="12" Foreground="{StaticResource MutedBrush}"/><Button Content="更新插件并继续" AutomationProperties.AutomationId="UpdateAndStartAutomaticTradeButton" Command="{x:Bind ViewModel.UpdateAndStartAutomaticTradeCommand}" Visibility="{x:Bind ViewModel.AutomaticUpdateVisibility,Mode=OneWay}" HorizontalAlignment="Left"/>
</StackPanel></Border>
<Expander Header="查看完整路线与逐站货单" Visibility="{x:Bind ViewModel.TradePlanVisibility,Mode=OneWay}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"><StackPanel Spacing="16"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions><TextBlock Text="{x:Bind ViewModel.PlanInfo,Mode=OneWay}" FontWeight="SemiBold" VerticalAlignment="Center"/><Button Grid.Column="1" Content="导出路线 JSON" Command="{x:Bind ViewModel.ExportPlanCommand}"/></Grid><controls:RouteMap Plan="{x:Bind ViewModel.Plan,Mode=OneWay}" Height="220"/><ItemsControl ItemsSource="{x:Bind ViewModel.Plan.Legs,Mode=OneWay}"><ItemsControl.ItemTemplate><DataTemplate x:DataType="models:TradeLeg"><Border Background="{StaticResource PanelAltBrush}" CornerRadius="8" Padding="16" Margin="0,0,0,8"><StackPanel Spacing="7"><TextBlock Text="{x:Bind Title}" FontWeight="SemiBold"/><TextBlock Text="{x:Bind Systems}" Style="{StaticResource MutedText}"/><TextBlock Text="{x:Bind CargoSummary}" Foreground="{StaticResource AccentBrush}" TextWrapping="Wrap"/><TextBlock Text="{x:Bind Metrics}" Style="{StaticResource MutedText}" FontSize="11"/></StackPanel></Border></DataTemplate></ItemsControl.ItemTemplate></ItemsControl><TextBlock Text="{x:Bind ViewModel.PlanWarnings,Mode=OneWay}" Style="{StaticResource MutedText}" FontSize="11"/></StackPanel></Expander>
</StackPanel>
</ScrollViewer>
</Page>