WPF项目实战视频《三》(主要为客户端软件界面设计)

20.WPF项目实战(项目介绍)

1.WEB API:接口,如何获取数据(增删改查)
2.客户端 项目功能:
待办,备忘录,汇总,完成比例,设置系统主题等。

21.WPF项目实战(创建项目结构)

VS使用prism插件新建一个项目MyToDo
在这里插入图片描述

此插件自动安装依赖包Prism.DryIoc,还需安装材料包MaterialDesignThemes,安装之后打开项目UML,按它的文档操作一遍
在这里插入图片描述
在App.xaml.cs中使主程序继承自PrismApplication
在这里插入图片描述
在App.xaml中添加MaterialDesignThemes包的部分(可直接从文档中复制过来)
在这里插入图片描述
在MainWindow.xaml中新加一个按钮
在这里插入图片描述
下一步添加一个Web Api:在解决方案中新建项目-api项目,命名为MyToDo.Api
在这里插入图片描述
设为启动项可正常启动。
在这里插入图片描述

22.WPF项目实战(设计首页导航条)

实现效果:
在这里插入图片描述
先把整个页面分为两个区域(导航条和主要区域)

<Grid.RowDefinitions>
    <RowDefinition Height="auto"/>
    <RowDefinition/>
</Grid.RowDefinitions>

左边的部分:可以直接从MaterialDesignThemes源码中取出这部分到MyToDo项目中:MaterialDesignThemes中找到启动项的mainWindow,复制需要的部分,导入MaterialDesignThemes,
在这里插入图片描述
删掉复制内容中不需要的部分,最后实现:
在这里插入图片描述

现需要加入导航条右边的部分,三个按钮和放大缩小处理。
在这里插入图片描述
新加头像,在项目文件中新建文件夹Images,添加想要的图片,然后在xaml中添加图片即可

<Image Width="25" Height="25" Source="/Images/1.jpg"/>

注意:需要将图片属性设置为资源,否则可能会出错
在这里插入图片描述
注意:插件:XamlStyler.Extension.Windows.VS2022.vsix 安装后直接保存可进行代码的自动对齐。

之前的缩小窗口,放大窗口,关闭窗口,未实现功能,因为此功能本身没有什么多联系,所以可以使用事件来完成。
在这里插入图片描述

public MainWindow()
{
    InitializeComponent();

    btnMin.Click += (s, e) =>
    {
        //把当前窗口的状态改成最小
        this.WindowState = WindowState.Minimized;
    };

    btnMax.Click += (s, e) =>
    {
        //判断当前窗口状态,如果是最大化则变为正常的,否则把当前窗口的状态改成最大
        if(this.WindowState == WindowState.Maximized)
            this.WindowState = WindowState.Normal;
        else
            this.WindowState = WindowState.Maximized;
    };

    btnClose.Click += (s, e) =>
    {
        //关闭当前窗口
        this.Close();
    };
}

还可以添加鼠标事件:拖动和鼠标双击处理。
鼠标拖动控件:为需要拖动的控件增加name
在这里插入图片描述

//添加鼠标拖动事件
ColorZone.MouseMove += (s, e) => { 
    //判断,如果是正在移动,则拖动窗口
    if(e.LeftButton == MouseButtonState.Pressed)
    {
        this.DragMove();
    }
};

//双击的处理
ColorZone.MouseDoubleClick += (s, e) =>
{
    if (this.WindowState == WindowState.Normal)
        this.WindowState = WindowState.Maximized;
    else
        this.WindowState = WindowState.Normal;
};

23.WPF项目实战(绑定菜单)

实现点击旁边的菜单栏,可根据选项动态进行切换界面,动态绑定菜单。有图标,名字,命名空间(用来导航)
创建公共的文件夹,创建一些实体类
1.添加一个系统导航菜单类MenuBar:(包含icon图标,title名字,命名控件nameSpace)
在这里插入图片描述
2.在view文件夹中新加窗口:MainView.xaml,在ViewModels新加类:MainViewModels类。

在MainViewModels类中可使用之前创建的MenuBar类,类函数添加导航每个选项的内容。

在主页面:xaml左边的代码中找到对应的需要添加的内容,头像/选项栏/数据模板,数据模板用list绑定MenuBars,界面相关位置绑定MainViewModels中的Icon,Title数据。

使用MainView而不是之前的MainWindowViewModel,在App中的窗口设置修改一下

MainView中需要导入prism,设置上下文实现自动绑定

运行之后,发现选中之后的样式类型可以优化,在app.xaml中增加样式,添加触发器,如果是选中的状态则更改样式,边框大小,边框颜色等(可使用MD中的动态变换颜色)

在MainView.xaml中引用app.xaml中增加样式

再改变选中的颜色和背景颜色:app.xaml中修改对应样式的Border

24.WPF项目实战(菜单导航)

在上一节实现了菜单的界面,这届实现导航的功能。
1.添加所有的子页面。View文件夹中,新添加用户控件IndexView.xaml,MemoView.xaml,SettingsView.xaml,ToDoView.xaml。

2.在ViewModels文件夹中,添加对应的ViewModels类:IndexViewModel.cs,MemoViewModel.cs,SettingsViewModel.cs,ToDoViewModels.cs。

3.加完之后在App.xaml.cs中添加依赖注入,注册为导航

4.实现导航的功能:在MainViewModel.cs中加入命令 DelegateCommand

5.在MainView.xaml中多注册一个区域(新建Extensions文件夹,中新建一个类PrismManager.cs管理区域信息)

6.注册之后就可以在MainViewModel中进行使用了。regionManager

7.导航中上一步下一步切换的功能,使用导航中的回调函数(导航日志,区域导航)

25.WPF项目实战(设计首页)

子页面的样式
显示主页四个图片,手动点击按钮添加代办,手动点击按钮添加备忘录

修改IndexView.xaml,修改样式

(另外:.cs中的快捷键:propfull 然后自动生成变量代码)

26.WPF项目实战(设计首页2)

子页面的样式设计完之后内容填充。

修改IndexView.xaml.cs ,修改实现,列表的绑定,显示所有待办事项。

27.WPF项目实战(设计待办事项界面)

新增待办事项按钮
新增之后显示待办事项

28.WPF项目实战(设计备忘录界面)

新增备忘录按钮
新增之后显示备忘录

29.WPF项目实战(设置界面)

个性化
系统设置
关于更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值