首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于Wpf+md+prism+sqlsugar管理界面开发

基于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.实现实时数据更新功能

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OAVVSjW5a1blGWSYUDU74Dkg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券