我有一个带有“紧急”字段的任务管理程序。有效值为 Int16,当前映射为 1(高)、2(中)、3(低)、4(无)和 99(关闭)。紧急度字段用于对任务进行排名以及更改列表和详细 View 中项目的外观。
当用户正在编辑或添加新任务时,他们会在 ComboBox 中选择或查看紧迫性。转换器传递字符串以替换 Ints。紧急集合非常简单,我没有将其设为数据库中的表,而是由方法填充的 ObservableCollection(Int16)。
由于可以使用同一屏幕查看已关闭的任务,因此“已关闭”的紧迫性必须在 ItemsSource 中,但我不希望用户能够选择它。为了防止用户能够在 ComboBox 中选择该项目,但如果数据库中的项目具有该值,我仍然能够看到它,我应该...
我问这个是因为这是一个学习项目(我的第一个真正的 WPF 和第一个 MVVM 项目)。我知道很少有做某事的正确方法,但我想确保我以合理的方式学习,因为要改掉坏习惯要困难得多
谢谢
麦克风
最佳答案
我更喜欢选项 2。对我来说听起来很 MVVM 风格。
当有其他应用程序或当您有报告访问“紧急”字段时,选项 3 将是有利的。原因:否则需要重复Int16及其含义之间的映射知识。将知识移动到数据库中以将其保存在一个位置。
也许考虑 Enums 使代码更具表现力:
enum Urgency { High=1, Medium=2, Low=3, Closed=99 };
这样,您将有一些很好的东西来评估 IsEnabled 属性,如下所示:
if (urgency == Urgency.Closed) return false;
当您需要存储枚举的数值时,您需要预先转换为 Int16。
关于sql - 如何在 C#/WPF/MVVM 应用程序中处理 ViewModel 和数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2497486/