WPF 毕设入门教程——Windows 桌面开发

知识库
知识库文档
/tech-stacks/wpf/tutorial/WPF 毕设入门教程——Windows 桌面开发.md

文档

WPF 毕设入门教程——Windows 桌面开发

前言

WPF 是 Windows 桌面开发的高配选择,适合毕设中需要复杂界面的项目:教务管理系统、销售管理、数据看板等。


第一章:MVVM 模式理解

MVVM = Model - View - ViewModel,是 WPF 的灵魂模式。

View (XAML)  ←→  ViewModel (C#)  ←→  Model (数据类)
  绑定                属性/命令            数据

为什么 MVVM?

  • View 零代码:XAML 只写界面,不写逻辑
  • 可测试:ViewModel 不依赖 UI,可单元测试
  • 解耦:设计师改界面不影响逻辑

第二章:数据绑定速成

基础绑定

<TextBlock Text="{Binding StudentName}" />

双向绑定(输入框)

<TextBox Text="{Binding StudentName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

集合绑定

<ListBox ItemsSource="{Binding Students}"
         DisplayMemberPath="Name" />

数据上下文

// Code-Behind 或 XAML
this.DataContext = new MainViewModel();

第三章:毕设实战——图书管理系统界面

主界面布局(XAML 骨架)

<Window ...>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200"/>   <!-- 侧边栏 -->
            <ColumnDefinition Width="*"/>      <!-- 主内容 -->
        </Grid.ColumnDefinitions>

        <!-- 导航菜单 -->
        <ListBox Grid.Column="0" ItemsSource="{Binding MenuItems}" />

        <!-- 内容区:根据选择切换 -->
        <ContentControl Grid.Column="1"
                        Content="{Binding SelectedViewModel}" />
    </Grid>
</Window>

ViewModel 核心代码

public class MainViewModel : INotifyPropertyChanged
{
    public ObservableCollection<Book> Books { get; } = new();

    private Book? _selectedBook;
    public Book? SelectedBook
    {
        get => _selectedBook;
        set { _selectedBook = value; OnPropertyChanged(); }
    }

    // 搜索命令
    public ICommand SearchCommand { get; }

    public MainViewModel()
    {
        SearchCommand = new RelayCommand(async () =>
        {
            var results = await _bookService.SearchAsync(Keyword);
            Books.Clear();
            foreach (var b in results) Books.Add(b);
        });
    }
}

第四章:样式与美化

Material Design 集成(毕设颜值加分)

dotnet add package MaterialDesignThemes
<Window xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
        Background="{DynamicResource MaterialDesignPaper}">
    <Button Style="{StaticResource MaterialDesignRaisedButton}"
            Content="搜索" />
</Window>

第五章:毕设常见问题

问题 解决
数据不更新 检查是否实现了 INotifyPropertyChanged
DataGrid 列不显示 设置 AutoGenerateColumns="False" 并手动定义列
窗口打开慢 考虑使用异步初始化,或启动画面(Splash Screen)
发布后缺 DLL 发布模式选「独立」,包含 .NET 运行时

思考题

  1. MVVM 中的 ICommand 和传统 Click 事件有什么本质区别?
  2. 如何实现 WPF 中的页面导航(类似浏览器前进/后退)?
  3. DependencyProperty 和普通 CLR 属性有什么区别?何时使用?

信息

路径
/tech-stacks/wpf/tutorial/WPF 毕设入门教程——Windows 桌面开发.md
更新时间
2026/5/30