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

XFEToolBox

【WPF】XFE工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
<Page x:Class="XFEToolBox.Client.Views.Pages.Admin.UserManagementPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:controls="clr-namespace:XFEToolBox.WpfCore.Controls;assembly=XFEToolBox.WpfCore"
      Background="Transparent" Title="" Loaded="Page_Loaded">
    <Grid Margin="14,9,14,12">
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <Border Style="{StaticResource AdminPageHeaderIcon}">
                <Grid Width="23" Height="23">
                    <Ellipse Width="8" Height="8" Margin="0,0,9,9" HorizontalAlignment="Center" VerticalAlignment="Center"
                             Stroke="White" StrokeThickness="1.7"/>
                    <Path Width="13" Height="7" Margin="0,10,9,0" HorizontalAlignment="Center" VerticalAlignment="Center"
                          Data="M 1,6 C 1,3 3.2,1 6.5,1 C 9.8,1 12,3 12,6" Stretch="Fill"
                          Stroke="White" StrokeThickness="1.7" StrokeStartLineCap="Round" StrokeEndLineCap="Round"/>
                    <Ellipse Width="6" Height="6" Margin="12,1,0,8" HorizontalAlignment="Center" VerticalAlignment="Center"
                             Stroke="#DFFFFFFF" StrokeThickness="1.5"/>
                    <Path Width="9" Height="5" Margin="13,10,0,0" HorizontalAlignment="Center" VerticalAlignment="Center"
                          Data="M 1,4 C 1,2 2.5,1 4.5,1 C 6.5,1 8,2 8,4" Stretch="Fill"
                          Stroke="#DFFFFFFF" StrokeThickness="1.5" StrokeStartLineCap="Round" StrokeEndLineCap="Round"/>
                </Grid>
            </Border>
            <StackPanel Grid.Column="1" Margin="11,0,0,0" VerticalAlignment="Center">
                <TextBlock Text="用户与权限" Style="{StaticResource AdminPageTitle}"/>
                <TextBlock Text="管理服务器账号、角色与访问状态" Style="{StaticResource AdminPageSubtitle}"/>
            </StackPanel>
            <Button Grid.Column="2" Content="刷新列表"
                    VerticalAlignment="Center" Click="RefreshButton_Click"/>
        </Grid>

        <Border Grid.Row="1" MinHeight="155" Style="{StaticResource AdminCard}" Margin="0,10,0,10" Padding="17,14,17,12">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Grid Margin="2,0,2,11">
                    <StackPanel>
                        <TextBlock Text="用户列表" Style="{StaticResource AdminSectionTitle}"/>
                        <TextBlock Text="选择用户后,可在下方修改密码、角色或启用状态" Style="{StaticResource AdminSectionSubtitle}"/>
                    </StackPanel>
                    <Border HorizontalAlignment="Right" VerticalAlignment="Center" Padding="10,5"
                            Background="#EEEEF8" CornerRadius="10">
                        <StackPanel Orientation="Horizontal">
                            <Ellipse Width="6" Height="6" Fill="#72CE9A" Margin="0,0,6,0" VerticalAlignment="Center"/>
                            <TextBlock x:Name="StatusText" MaxWidth="180" Foreground="#508264" FontSize="9.5"
                                       VerticalAlignment="Center" TextTrimming="CharacterEllipsis"/>
                        </StackPanel>
                    </Border>
                </Grid>
                <Grid Grid.Row="1">
                    <controls:RoundedClipBorder MinHeight="80" Background="White" BorderBrush="#E5E5F0" BorderThickness="1" CornerRadius="12">
                        <DataGrid x:Name="UserGrid" Style="{StaticResource AdminDataGrid}" IsReadOnly="True">
                            <DataGrid.Columns>
                                <DataGridTemplateColumn Header="账号" SortMemberPath="UserName" Width="1.15*">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <Grid>
                                                <Grid.ColumnDefinitions><ColumnDefinition Width="34"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                                                <Border Width="28" Height="28" CornerRadius="9" Background="#EEEEFC" VerticalAlignment="Center">
                                                    <TextBlock Text="◎" Foreground="#7777C9" FontSize="13" FontWeight="SemiBold" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                                                </Border>
                                                <StackPanel Grid.Column="1" VerticalAlignment="Center">
                                                    <TextBlock Text="{Binding UserName}" Style="{StaticResource ToolBoxDataGridPrimaryTextStyle}"/>
                                                    <TextBlock Text="{Binding Id}" Style="{StaticResource ToolBoxDataGridSecondaryTextStyle}" FontSize="8.5" Margin="0,2,0,0"/>
                                                </StackPanel>
                                            </Grid>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                                <DataGridTemplateColumn Header="昵称" SortMemberPath="NickName" Width="*">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate><TextBlock Text="{Binding NickName}" Style="{StaticResource ToolBoxDataGridPrimaryTextStyle}" FontWeight="Normal"/></DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                                <DataGridTemplateColumn Header="角色" SortMemberPath="RoleText" Width="116" HeaderStyle="{StaticResource AdminDataGridCenteredHeader}">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <Border x:Name="RoleBadge" Padding="9,4" Background="#F2F2F8" CornerRadius="9" HorizontalAlignment="Center">
                                                <TextBlock x:Name="RoleText" Text="普通用户" Foreground="#77778C" FontSize="9.5"/>
                                            </Border>
                                            <DataTemplate.Triggers>
                                                <DataTrigger Binding="{Binding IsAdministrator}" Value="True">
                                                    <Setter TargetName="RoleBadge" Property="Background" Value="#ECECFC"/>
                                                    <Setter TargetName="RoleText" Property="Text" Value="管理员"/>
                                                    <Setter TargetName="RoleText" Property="Foreground" Value="#6666B2"/>
                                                    <Setter TargetName="RoleText" Property="FontWeight" Value="SemiBold"/>
                                                </DataTrigger>
                                            </DataTemplate.Triggers>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                                <DataGridTemplateColumn Header="状态" SortMemberPath="StatusText" Width="100" HeaderStyle="{StaticResource AdminDataGridCenteredHeader}">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                                                <Ellipse x:Name="StatusDot" Width="7" Height="7" Fill="#D5848D" Margin="0,0,6,0" VerticalAlignment="Center"/>
                                                <TextBlock x:Name="UserStatusText" Text="已禁用" Foreground="#A3656C" FontSize="9.5" VerticalAlignment="Center"/>
                                            </StackPanel>
                                            <DataTemplate.Triggers>
                                                <DataTrigger Binding="{Binding Enable}" Value="True">
                                                    <Setter TargetName="StatusDot" Property="Fill" Value="#72CE9A"/>
                                                    <Setter TargetName="UserStatusText" Property="Text" Value="正常"/>
                                                    <Setter TargetName="UserStatusText" Property="Foreground" Value="#4F9069"/>
                                                </DataTrigger>
                                            </DataTemplate.Triggers>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>
                            </DataGrid.Columns>
                        </DataGrid>
                    </controls:RoundedClipBorder>
                    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" IsHitTestVisible="False">
                        <StackPanel.Style>
                            <Style TargetType="StackPanel">
                                <Setter Property="Visibility" Value="Collapsed"/>
                                <Style.Triggers><DataTrigger Binding="{Binding HasItems, ElementName=UserGrid}" Value="False"><Setter Property="Visibility" Value="Visible"/></DataTrigger></Style.Triggers>
                            </Style>
                        </StackPanel.Style>
                        <Border Width="44" Height="44" CornerRadius="14" Background="#F0EFFC" HorizontalAlignment="Center">
                            <TextBlock Text="◎" Foreground="#8585D3" FontSize="18" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </Border>
                        <TextBlock Text="暂无用户数据" Foreground="#55556B" FontSize="11" FontWeight="SemiBold" HorizontalAlignment="Center" Margin="0,9,0,0"/>
                    </StackPanel>
                </Grid>
            </Grid>
        </Border>

        <Border Grid.Row="2" Style="{StaticResource AdminCard}" Padding="17,12">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <Grid>
                    <StackPanel>
                        <TextBlock Text="新建用户" Style="{StaticResource AdminSectionTitle}"/>
                        <TextBlock Text="创建普通账号,也可以直接授予管理员权限" Style="{StaticResource AdminSectionSubtitle}"/>
                    </StackPanel>
                    <CheckBox x:Name="NewIsAdmin" Content="创建为管理员" Style="{StaticResource AdminCheckBox}"
                              HorizontalAlignment="Right" VerticalAlignment="Center"/>
                </Grid>

                <Grid Grid.Row="1" Margin="0,10,0,0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="1.05*"/>
                        <ColumnDefinition Width="1.05*"/>
                        <ColumnDefinition Width="1.25*"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <controls:TextEditor x:Name="NewUserName" Style="{StaticResource AdminTextEditor}"
                                         Margin="0,0,8,0" HintText="账号" ToolTip="账号"/>
                    <controls:TextEditor x:Name="NewNickName" Grid.Column="1" Style="{StaticResource AdminTextEditor}"
                                         Margin="0,0,8,0" HintText="昵称" ToolTip="昵称"/>
                    <controls:PasswordEditor x:Name="NewPassword" Grid.Column="2" Style="{StaticResource AdminPasswordEditor}"
                                                  Margin="0,0,8,0" HintText="密码(至少 8 位)" ToolTip="密码(至少 8 位)"/>
                    <Button Grid.Column="3" Content="创建用户" controls:ButtonAssist.IsPrimary="True"
                            MinWidth="88" Click="CreateButton_Click"/>
                </Grid>

                <Border Grid.Row="2" Height="1" Background="#E6E6F0" Margin="0,10"/>

                <Grid Grid.Row="3">
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                        <controls:PasswordEditor x:Name="ResetPassword" Width="155"
                                                      Style="{StaticResource AdminPasswordEditor}" Margin="0,0,8,0"
                                                      HintText="设置新密码" ToolTip="为选中用户设置新密码"/>
                        <Button Content="重置密码" Margin="0,0,7,0"
                                Click="ResetPasswordButton_Click"/>
                        <Button Content="切换角色" Margin="0,0,7,0"
                                Click="ToggleRoleButton_Click"/>
                        <Button Content="启用 / 禁用" MinWidth="88"
                                Click="ToggleStatusButton_Click"/>
                    </StackPanel>
                </Grid>
            </Grid>
        </Border>
    </Grid>
</Page>