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

HaloPixelToolBox

【WinUI3】基于USB HID通讯的花再音响工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
<?xml version="1.0" encoding="utf-8"?>
<Page
    x:Class="HaloPixelToolBox.Backend.Views.IPBanManagePage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:models="using:XFEExtension.NetCore.ServerInteractive.Models"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Loaded="Page_Loaded">

    <Grid RowSpacing="14">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <StackPanel Spacing="6">
            <TextBlock Text="IP 封禁管理" FontSize="28" FontWeight="SemiBold"/>
            <TextBlock Text="黑名单由服务器持久化保存。被封禁的地址会在进入业务路由前收到 403 响应。" TextWrapping="Wrap" Opacity="0.72"/>
        </StackPanel>

        <Border Grid.Row="1" Background="{ThemeResource CardBackgroundFillColorDefaultBrush}" BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}" BorderThickness="1" CornerRadius="8" Padding="16">
            <StackPanel Spacing="10">
                <Grid ColumnSpacing="12">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="260"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <TextBox Header="IP 地址" Text="{x:Bind ViewModel.IPAddressText, Mode=TwoWay}" PlaceholderText="203.0.113.10"/>
                    <TextBox Grid.Column="1" Header="备注" Text="{x:Bind ViewModel.Notes, Mode=TwoWay}" PlaceholderText="封禁原因"/>
                </Grid>
                <StackPanel Orientation="Horizontal" Spacing="10">
                    <Button Content="封禁" Command="{x:Bind ViewModel.AddCommand}"/>
                    <Button Content="解封选中项" Command="{x:Bind ViewModel.RemoveCommand}"/>
                    <Button Content="刷新" Command="{x:Bind ViewModel.RefreshCommand}"/>
                    <ProgressRing Width="24" Height="24" IsActive="{x:Bind ViewModel.IsBusy, Mode=OneWay}"/>
                    <TextBlock Text="{x:Bind ViewModel.StatusText, Mode=OneWay}" VerticalAlignment="Center" TextWrapping="Wrap"/>
                </StackPanel>
            </StackPanel>
        </Border>

        <ListView Grid.Row="2" ItemsSource="{x:Bind ViewModel.Items, Mode=OneWay}" SelectedItem="{x:Bind ViewModel.SelectedItem, Mode=TwoWay}" SelectionMode="Single">
            <ListView.Header>
                <Grid Padding="12,8" ColumnSpacing="16" Background="{ThemeResource SolidBackgroundFillColorTertiaryBrush}">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="240"/>
                        <ColumnDefinition Width="220"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <TextBlock Text="IP 地址" FontWeight="SemiBold"/>
                    <TextBlock Grid.Column="1" Text="封禁时间" FontWeight="SemiBold"/>
                    <TextBlock Grid.Column="2" Text="备注" FontWeight="SemiBold"/>
                </Grid>
            </ListView.Header>
            <ListView.ItemTemplate>
                <DataTemplate x:DataType="models:IPAddressInfo">
                    <Grid Padding="4" ColumnSpacing="16">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="240"/>
                            <ColumnDefinition Width="220"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="{x:Bind IPAddress}"/>
                        <TextBlock Grid.Column="1" Text="{x:Bind BannedTime}"/>
                        <TextBlock Grid.Column="2" Text="{x:Bind Notes}" TextWrapping="Wrap"/>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</Page>