我有一个带有菜单栏的窗口。有 3 个菜单项(命令):
- 新文件
- 加载文件
- 保存存档
在我的 MVVM 中,我有几个属性。如果用户加载文件,属性将被填充。用户可以在程序中做一些事情(改变属性的值..)并且可以将属性的值保存到一个 xml 文件中。因此,如果用户保存文件并单击“新建文件”,将创建一个新文件,这意味着我将“重置”所有属性。如果用户在程序中执行了某些操作并且没有保存文件并单击“新建文件”,则应该会弹出一个 MessageBox。它应该说“你真的要保存文件吗,......未保存的文件将被覆盖”(猜你知道我的意思......)
因此,为了清除它,这里有一些场景:
- 用户更改程序中的属性并单击“新文件”-> 弹出消息框
- 用户更改程序中的属性并单击“保存文件”并单击“新文件”-> 属性将被重置
- 用户单击“加载文件”并单击“新文件”-> 属性将被重置
那么我应该如何检查属性是否已更改?我可以有一个全局布尔值“HasChanged”。如果用户单击保存或加载,HasChanged = false
. 如果用户做了某事,HasChanged = true
......我可以把它放在属性的每个设置器中,但这是一个愚蠢的解决方案......