XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
<Page xmlns:controls="using:XFEEDToolBox.Controls" xmlns:live="using:XFEEDToolBox.Core.Presentation" x:Class="XFEEDToolBox.Views.MaterialsPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid RowSpacing="16" Padding="0,8,0,12">
        <Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions>
        <StackPanel Spacing="6"><TextBlock Text="MATERIAL WAREHOUSE" Style="{StaticResource Eyebrow}"/><TextBlock Text="材料仓库" Style="{StaticResource PageTitle}"/><TextBlock Text="工程材料的实时库存、分类与数量。" Style="{StaticResource MutedText}"/></StackPanel>
        <TextBlock Grid.Row="1" Text="{x:Bind ViewModel.WarehouseSummary,Mode=OneWay}" Style="{StaticResource MutedText}"/>
        <Border Grid.Row="2" Style="{StaticResource CardStyle}" Padding="16" MaxHeight="340">
            <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Padding="0,0,8,0">
                <StackPanel Spacing="12">
                    <Grid ColumnSpacing="16">
                        <Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="Auto"/></Grid.ColumnDefinitions>
                        <StackPanel Spacing="4">
                            <StackPanel Orientation="Horizontal" Spacing="8"><controls:GameIcon IconKey="FeatureFilter" Width="16" Height="16"/><TextBlock Text="筛选与排序" FontWeight="SemiBold" FontSize="16"/></StackPanel>
                            <TextBlock Text="{x:Bind ViewModel.WarehouseFilterSummary,Mode=OneWay}" Style="{StaticResource MutedText}" TextWrapping="Wrap"/>
                        </StackPanel>
                        <Button Grid.Column="1" Command="{x:Bind ViewModel.ResetWarehouseFiltersCommand}" VerticalAlignment="Top" AutomationProperties.Name="重置全部材料筛选和排序"><StackPanel Orientation="Horizontal" Spacing="6"><FontIcon Glyph="&#xE777;" FontSize="14"/><TextBlock Text="重置"/></StackPanel></Button>
                    </Grid>
                    <Grid ColumnSpacing="12">
                        <Grid.ColumnDefinitions><ColumnDefinition Width="*"/><ColumnDefinition Width="180"/><ColumnDefinition Width="88"/></Grid.ColumnDefinitions>
                        <TextBox Text="{x:Bind ViewModel.MaterialSearch,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" PlaceholderText="搜索材料名称、中文名或游戏标识…" AutomationProperties.Name="搜索材料" VerticalAlignment="Bottom"/>
                        <ComboBox Grid.Column="1" SelectedIndex="{x:Bind ViewModel.MaterialSortIndex,Mode=TwoWay}" HorizontalAlignment="Stretch" AutomationProperties.Name="材料排序依据">
                            <ComboBoxItem Content="类别与等级"/><ComboBoxItem Content="材料名称"/><ComboBoxItem Content="库存数量"/><ComboBoxItem Content="材料等级"/><ComboBoxItem Content="库存占比"/><ComboBoxItem Content="剩余容量"/><ComboBoxItem Content="清单缺口"/>
                        </ComboBox>
                        <Button Grid.Column="2" Command="{x:Bind ViewModel.ToggleMaterialSortDirectionCommand}" HorizontalAlignment="Stretch" AutomationProperties.Name="切换材料排序方向"><StackPanel Orientation="Horizontal" Spacing="6"><FontIcon Glyph="{x:Bind ViewModel.MaterialSortDirectionGlyph,Mode=OneWay}" FontSize="14"/><TextBlock Text="{x:Bind ViewModel.MaterialSortDirectionText,Mode=OneWay}"/></StackPanel></Button>
                    </Grid>
                    <VariableSizedWrapGrid Orientation="Horizontal" ItemWidth="192" ItemHeight="70">
                        <ComboBox Header="材料类别" SelectedIndex="{x:Bind ViewModel.MaterialCategoryIndex,Mode=TwoWay}" Margin="0,0,12,0" HorizontalAlignment="Stretch" AutomationProperties.Name="材料类别"><ComboBoxItem Content="全部类别"/><ComboBoxItem Content="原材料"/><ComboBoxItem Content="人造材料"/><ComboBoxItem Content="数据"/></ComboBox>
                        <ComboBox Header="拥有状态" SelectedIndex="{x:Bind ViewModel.MaterialOwnershipIndex,Mode=TwoWay}" Margin="0,0,12,0" HorizontalAlignment="Stretch"><ComboBoxItem Content="全部材料"/><ComboBoxItem Content="已拥有"/><ComboBoxItem Content="未拥有 · 零库存"/></ComboBox>
                        <ComboBox Header="库存状态" SelectedIndex="{x:Bind ViewModel.MaterialStockLevelIndex,Mode=TwoWay}" Margin="0,0,12,0" HorizontalAlignment="Stretch"><ComboBoxItem Content="不限库存状态"/><ComboBoxItem Content="库存不足 25%"/><ComboBoxItem Content="库存不足 50%"/><ComboBoxItem Content="接近满仓 · ≥80%"/><ComboBoxItem Content="已满仓"/><ComboBoxItem Content="尚未满仓"/><ComboBoxItem Content="容量未知"/></ComboBox>
                        <ComboBox Header="全局改装清单" SelectedIndex="{x:Bind ViewModel.MaterialChecklistIndex,Mode=TwoWay}" Margin="0,0,12,0" HorizontalAlignment="Stretch" ToolTipService.ToolTip="依据全局改装清单中已加入的材料,按当前库存判断缺口。"><ComboBoxItem Content="不限清单状态"/><ComboBoxItem Content="清单中的材料"/><ComboBoxItem Content="清单仍有缺口"/><ComboBoxItem Content="清单已备齐"/></ComboBox>
                    </VariableSizedWrapGrid>
                    <Expander x:Name="MaterialRangeFilters" Header="等级与数量范围" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
                        <VariableSizedWrapGrid Orientation="Horizontal" ItemWidth="180" ItemHeight="72">
                            <ComboBox Header="最低等级" SelectedIndex="{x:Bind ViewModel.MaterialMinimumGradeIndex,Mode=TwoWay}" Margin="0,0,12,0" HorizontalAlignment="Stretch"><ComboBoxItem Content="不限"/><ComboBoxItem Content="G1"/><ComboBoxItem Content="G2"/><ComboBoxItem Content="G3"/><ComboBoxItem Content="G4"/><ComboBoxItem Content="G5"/></ComboBox>
                            <ComboBox Header="最高等级" SelectedIndex="{x:Bind ViewModel.MaterialMaximumGradeIndex,Mode=TwoWay}" Margin="0,0,12,0" HorizontalAlignment="Stretch"><ComboBoxItem Content="不限"/><ComboBoxItem Content="G1"/><ComboBoxItem Content="G2"/><ComboBoxItem Content="G3"/><ComboBoxItem Content="G4"/><ComboBoxItem Content="G5"/></ComboBox>
                            <NumberBox Header="最少数量" Value="{x:Bind ViewModel.MaterialMinimumQuantity,Mode=TwoWay}" PlaceholderText="不限" Minimum="0" Maximum="2147483647" SmallChange="1" LargeChange="10" SpinButtonPlacementMode="Compact" Margin="0,0,12,0" HorizontalAlignment="Stretch"/>
                            <NumberBox Header="最多数量" Value="{x:Bind ViewModel.MaterialMaximumQuantity,Mode=TwoWay}" PlaceholderText="不限" Minimum="0" Maximum="2147483647" SmallChange="1" LargeChange="10" SpinButtonPlacementMode="Compact" Margin="0,0,12,0" HorizontalAlignment="Stretch"/>
                        </VariableSizedWrapGrid>
                    </Expander>
                </StackPanel>
            </ScrollViewer>
        </Border>
        <Grid Grid.Row="3" x:Name="MaterialTableHeader" Padding="12,10" ColumnSpacing="16" Background="{StaticResource PanelBrush}" CornerRadius="6">
            <Grid.ColumnDefinitions><ColumnDefinition Width="2*"/><ColumnDefinition Width="100"/><ColumnDefinition Width="56"/><ColumnDefinition Width="126"/><ColumnDefinition Width="1.4*"/></Grid.ColumnDefinitions>
            <TextBlock Text="材料名称" Tag="material-name-header" Margin="44,0,0,0" Style="{StaticResource TableHeader}" HorizontalAlignment="Left"/>
            <TextBlock Grid.Column="1" Text="类别" Tag="material-category-header" Style="{StaticResource TableHeader}" HorizontalAlignment="Left"/>
            <TextBlock Grid.Column="2" Text="等级" Tag="material-grade-header" Style="{StaticResource TableHeader}" HorizontalAlignment="Left"/>
            <TextBlock Grid.Column="3" Text="数量 · 当前 / 最大" Tag="material-quantity-header" Style="{StaticResource TableHeader}" HorizontalAlignment="Left"/>
            <TextBlock Grid.Column="4" Text="库存进度" Tag="material-progress-header" Style="{StaticResource TableHeader}" HorizontalAlignment="Left"/>
        </Grid>
        <ListView x:Name="MaterialTable" Grid.Row="4" ItemsSource="{x:Bind ViewModel.MaterialStocks,Mode=OneWay}" SelectionMode="None" HorizontalContentAlignment="Stretch" Padding="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <ListView.ItemContainerStyle><Style TargetType="ListViewItem"><Setter Property="Padding" Value="0"/><Setter Property="Margin" Value="0"/><Setter Property="HorizontalContentAlignment" Value="Stretch"/></Style></ListView.ItemContainerStyle>
            <ListView.ItemTemplate><DataTemplate x:DataType="live:MaterialLiveRow"><Grid Padding="12,13" ColumnSpacing="16" BorderBrush="{StaticResource PanelStrokeBrush}" BorderThickness="0,0,0,1">
                <Grid.ColumnDefinitions><ColumnDefinition Width="2*"/><ColumnDefinition Width="100"/><ColumnDefinition Width="56"/><ColumnDefinition Width="126"/><ColumnDefinition Width="1.4*"/></Grid.ColumnDefinitions>
                <Grid ColumnSpacing="12"><Grid.ColumnDefinitions><ColumnDefinition Width="32"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><controls:MaterialIcon Category="{x:Bind Category,Mode=OneWay}"/><TextBlock Grid.Column="1" Text="{x:Bind Name,Mode=OneWay}" Tag="material-name" FontWeight="SemiBold" VerticalAlignment="Center" HorizontalAlignment="Left" TextWrapping="Wrap"/></Grid>
                <TextBlock Grid.Column="1" Text="{x:Bind CategoryName,Mode=OneWay}" Tag="material-category" Style="{StaticResource MutedText}" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                <controls:MaterialGradeIcon Grid.Column="2" Grade="{x:Bind Grade,Mode=OneWay}" Tag="material-grade" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                <TextBlock Grid.Column="3" Text="{x:Bind Quantity,Mode=OneWay}" Tag="material-quantity" FontSize="18" Foreground="{StaticResource TealBrush}" VerticalAlignment="Center" HorizontalAlignment="Left"/>
                <ProgressBar Grid.Column="4" Value="{x:Bind FillPercent,Mode=OneWay}" Tag="material-progress" VerticalAlignment="Center" Visibility="{x:Bind HasCapacity,Mode=OneWay,Converter={StaticResource BoolVisibility}}" AutomationProperties.Name="库存进度"/>
            </Grid></DataTemplate></ListView.ItemTemplate>
        </ListView>
        <StackPanel Grid.Row="4" Spacing="12" HorizontalAlignment="Center" VerticalAlignment="Center" MaxWidth="440" Visibility="{x:Bind ViewModel.WarehouseHasNoResults,Mode=OneWay,Converter={StaticResource BoolVisibility}}">
            <FontIcon Glyph="&#xE721;" FontSize="24" Foreground="{StaticResource MutedBrush}"/>
            <TextBlock Text="{x:Bind ViewModel.WarehouseEmptyText,Mode=OneWay}" Style="{StaticResource MutedText}" TextWrapping="Wrap" TextAlignment="Center"/>
            <Button Content="重置筛选" Command="{x:Bind ViewModel.ResetWarehouseFiltersCommand}" HorizontalAlignment="Center"/>
        </StackPanel>
    </Grid>
</Page>