MVVM项目开发(商品管理系统二)
注:完整《商品管理系统》到我的资源免费下载
一、主页面数据显示
注:下面使用 Microsoft Visual Studio2022,部分知识点引自导师教学
1.命令
(1)、为了实现页面与后台类的数据交互,我们在页面上的每一个按钮和功能都绑定了相应的事件,如果后台类需要获取页面传递过来的数据则通过数据传递,所以我们通过后台类
绑定页面的事件。
(2)、实现窗口的最大化、最小化、还原、关闭功能。
(3)、后台类命令绑定事件,因为最小化和最大化功能涉及到窗口的大小变化,所以要使用到vs里的封装“Window”类,该类通过创建、配置、显示和管理的窗口和对话框生存期的能力。
2.方法
(1)、最小化窗口方法,使用到VS中的枚举关键字“WindowState”其功能为指定一个窗口是否是最小化、最大化窗口还原,赋值为“Minimized”枚举值为1默认为最小化。
(2)、最大化窗口方法,思路:
* 1、先声明两个全局变量,类型为Rect和bool(默认为false)的变量分别记录
* 2、两种情况
*(1)bool的变量=true,则还原窗口(获取Rect的Left、Top、Width、Height,同时更改bool的变量=false)
*(2)bool的变量=false,窗口最大化
*①new Rect(),保存下当前窗口的Left、Top、Width、Height;
*②设置窗口最大化(SystemParameters.WorkArea)获取工作区大小。
*③同时更改bool的变量=true
(3)、使用try/catch捕捉错误,有两种情况,当bool类型的变量等于“true”时则还原窗口(获取Rect(矩形)的Left(左边)、Top(头部)、Width(宽度)、Height(高度),同时更改bool的变量 = false)。
(4)、不满足条件否则,bool的变量 = false,窗口最大化,new Rect(),保存下当前窗口的Left、Top、Width、Height。
(5)、VS提供的“Rect”架构具有指定的x坐标、y坐标、宽度。高度。
(6)、设置窗口最大化(SystemParameters.WorkArea)获取工作区大小,“SystemParameters”VS提供的该类包含可以用来查询系统设置的属性,“WorkArea”该工作区提供了获取主监视器上工作区域尺寸,返回的结果包含接收工作区域坐标(表示为虚拟屏幕坐标)的RECT(矩形)结构。
(7)、关闭页面同时关闭应用程序
(8)、使用try/catch捕捉错误,关闭之前弹出消息框提醒是否关闭当前页面及系统,“Application”VS封装类提供的(WPF)应用程序,“Current”指定当前操作,“Shutdown”关键字关闭应用程序。
3.绑定
(1)、主要包含元素绑定和非元素绑定两种。
①、元素绑定,是绑定的最简单形式,源对象是WPF的元素,并且源对象的属性是依赖项属性。 依赖项属性具有内置的更改通知支持,所以当我们的源对象中改变依赖项属性的值时,会立即更新目标对象中的绑定属性。
②、非元素类型绑定:Source属性:绑定具体的数据对象:如系统信息跟我们定义的资源数据,
③、RelativeSource 属性:设置该属性 可以根据当前目标对象的相对关系指向源目标。比如获取当 前对象的父亲对象、兄弟对象或者自身的其他属性等一些数据。
1.创建RelativeSource的时候,mode模式有四种类型:
1)、FindAncestor:引用数据绑定元素的父链中的上级。 这可用于绑定到特定类型的上级或其子 类。 若要指定 AncestorType 和/或 AncestorLevel,这就是应使用的模式。
2)、PreviousData:允许在当前显示的数据项列表中绑定上一个数据项(不是包含数据项的控件)。
3)、Self:引用正在其上设置绑定的元素,并允许你将该元素的一个属性绑定到同一元素 的其他属性上。
4)、TemplatedParent:引用应用了模板的元素,其中此模板中存在数据绑定元素。 这类似于设 置 TemplateBindingExtension,且仅在 Binding 位于模板内部时适用。
5)、注意:AncestorType 指得是查找的对象类型,AncestorLevel 代表搜索的层级的位置,如果是3,则 忽略前两个发现的元素。
④、DataContext 属性:如果想将一个对象绑定到一个由多个元素组成的视图块或者复合元素中,用 DataContext 会更好开发和维护。
(2)、下拉框绑定
(3)、由于该下拉框的命令为“ListProductCategory”,因此在后台类中属性绑定下拉框使用“ListProductCategory”并且需要绑定到该下拉框类别的数据库表,属性写法如下:
(4)、因为下拉框关联的数据库表的数据是提前设定的,所以不需要对表进行数据新增操作,通过“ListProductCategory”属性进行绑定,只需获取表数据进行选择就可以。