基于WPF、Material Design、Prism和SQLSugar实现后台管理系统的代码示例:
1.首先创建主窗口布局(MainWindow.xaml):
<Window x:Class="AdminSystem.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
Style="{StaticResource MaterialDesignWindow}"
WindowStartupLocation="CenterScreen"
mc:Ignorable="d"
Title="Admin System" Height="768" Width="1366">
<Grid>
<DockPanel>
<!-- 顶部标题栏 -->
<Grid DockPanel.Dock="Top" Height="60" Background="{DynamicResource PrimaryHueMidBrush}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!-- Logo和标题 -->
<StackPanel Orientation="Horizontal" Margin="20,0">
<Image Source="/Resources/logo.png" Width="32" Height="32"/>
<TextBlock Text="Admin System"
VerticalAlignment="Center"
Margin="10,0"
FontSize="18"
Foreground="White"/>
</StackPanel>
<!-- 用户信息区域 -->
<StackPanel Grid.Column="2" Orientation="Horizontal" Margin="20,0">
<Button Style="{StaticResource MaterialDesignIconButton}"
Content="{materialDesign:PackIcon Kind=AccountCircle}"
Foreground="White"/>
<TextBlock Text="{Binding UserName}"
VerticalAlignment="Center"
Margin="10,0"
Foreground="White"/>
<Button Content="退出"
Style="{StaticResource MaterialDesignFlatButton}"
Foreground="White"
Command="{Binding LogoutCommand}"/>
</StackPanel>
</Grid>
<!-- 主内容区域 -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- 左侧菜单 -->
<ListBox ItemsSource="{Binding MenuItems}"
SelectedItem="{Binding SelectedMenuItem}"
Style="{StaticResource MaterialDesignNavigationListBox}"
Background="{DynamicResource PrimaryHueLightBrush}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}"
Margin="16 8"
Foreground="White"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!-- 内容区域 -->
<ContentControl Grid.Column="1"
prism:RegionManager.RegionName="ContentRegion"/>
</Grid>
</DockPanel>
</Grid>
1.主窗口ViewModel(MainWindowViewModel.cs):
public class MainWindowViewModel : BindableBase
{
private readonly IRegionManager _regionManager;
private readonly IEventAggregator _eventAggregator;
public MainWindowViewModel(IRegionManager regionManager,
IEventAggregator eventAggregator)
{
_regionManager = regionManager;
_eventAggregator = eventAggregator;
InitializeMenu();
LogoutCommand = new DelegateCommand(OnLogout);
}
private ObservableCollection<MenuItem> _menuItems = new();
public ObservableCollection<MenuItem> MenuItems
{
get => _menuItems;
set => SetProperty(ref _menuItems, value);
}
private string _userName = "管理员";
public string UserName
{
get => _userName;
set => SetProperty(ref _userName, value);
}
public DelegateCommand LogoutCommand { get; }
private void InitializeMenu()
{
MenuItems.Add(new MenuItem("个人中心", "PersonalView"));
MenuItems.Add(new MenuItem("用户管理", "UserManageView"));
MenuItems.Add(new MenuItem("学生管理", "StudentManageView"));
MenuItems.Add(new MenuItem("课程管理", "CourseManageView"));
}
private void OnLogout()
{
// 处理退出逻辑
_eventAggregator.GetEvent<LogoutEvent>().Publish();
}
}
public class MenuItem
{
public string Title { get; }
public string ViewName { get; }
public MenuItem(string title, string viewName)
{
Title = title;
ViewName = viewName;
}
}
1.数据库配置(DatabaseConfig.cs):
public static class DatabaseConfig
{
public static SqlSugarScope Initialize()
{
return new SqlSugarScope(new ConnectionConfig()
{
ConnectionString = "server=localhost;Database=admin_system;Uid=root;Pwd=123456;",
DbType = DbType.MySql,
IsAutoCloseConnection = true
},
db => {
// 初始化代码
});
}
}
1.用户管理模块示例(UserManageView.xaml):
<UserControl x:Class="AdminSystem.Modules.User.Views.UserManageView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<Grid Margin="16">
<DataGrid ItemsSource="{Binding Users}"
AutoGenerateColumns="False"
Style="{StaticResource MaterialDesignDataGrid}">
<DataGrid.Columns>
<DataGridTextColumn Header="用户名" Binding="{Binding UserName}"/>
<DataGridTextColumn Header="邮箱" Binding="{Binding Email}"/>
<DataGridTextColumn Header="角色" Binding="{Binding Role}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
1.用户管理ViewModel(UserManageViewModel.cs):
public class UserManageViewModel : BindableBase
{
private readonly ISqlSugarClient _db;
private ObservableCollection<User> _users = new();
public UserManageViewModel(ISqlSugarClient db)
{
_db = db;
LoadData();
}
public ObservableCollection<User> Users
{
get => _users;
set => SetProperty(ref _users, value);
}
private void LoadData()
{
Users = new ObservableCollection<User>(_db.Queryable<User>().ToList());
}
}
[SugarTable("sys_user")]
public class User
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public string Role { get; set; }
}
实现步骤说明:
1.创建WPF项目并安装必要的NuGet包:
1.Prism.DryIoc
2.MaterialDesignThemes
3.SqlSugarCore
4.MySql.Data
2.配置Material Design主题:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<materialDesign:BundledTheme BaseTheme="Light" PrimaryColor="DeepPurple" SecondaryColor="Lime" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
1.配置Prism模块化架构:
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
moduleCatalog.AddModule<UserManageModule>();
moduleCatalog.AddModule<StudentManageModule>();
// 添加其他模块...
}
1.实现导航控制:
private void NavigateToView(string viewName)
{
}
关键点说明:
1.使用DockPanel实现主布局结构,分为顶部标题栏和主内容区
2.Material Design控件库提供现代化的UI组件
3.Prism的RegionManager管理动态内容区域
4.SQLSugar实现简洁的ORM操作
5.模块化设计便于功能扩展和维护
6.MVVM模式分离界面与业务逻辑
7.使用事件聚合器处理全局事件(如用户登出)
建议配合以下功能增强系统:
1.添加权限验证模块
2.实现数据分页和筛选功能
3.添加数据校验和表单验证
4.集成日志记录系统
5.实现Excel导入导出功能
6.添加图表统计模块
7.实现实时数据更新功能
领取专属 10元无门槛券
私享最新 技术干货