在日期方面,通过设置日期类型的set变量很容易实现。
在时间方面,由于明显的原因,由于时间类型不存在,因此似乎有些棘手。
(是的,在您提出这样的建议之前,我已经阅读过How do I set Date AND time picker in MDriven?,但并没有完全帮助您。
上下文:
我们试图通过允许用户在Int形式的列中写入所需的时间并实施约束来禁止用户编写除“ hhmm”之外的内容的方法来解决此问题。尽管此方法有效,但不切实际,并且会降低用户体验。
理想情况下,我们希望有一个选择列表,用户可以在其中选择预设时间(即16:00、16:30、17:00等)。这样,所选时间的格式将永远不会破坏我们以后要使用时间的框架,因为它受到限制。
问题:
如何实现?当然可以使用一种方法来创建常量(例如硬编码的,仅可见的变量),或者您可以为此使用特定的运算符来收集字符串实例?
答案 0 :(得分:1)
我认为您希望从一组常用值中进行选择。但是可能用户可以更改选择的值。
我将声明一个TimeValueStore类。在本课程中,我将只具有日期时间的时间部分集的属性,所以0000-00-00 16:00。我将添加一个管理界面来维护这些。 (我可以使用DateTime.Parse(vTimeStringValue)从字符串中解析出DateTime。)
然后在UI中,我可以使用带有TimeValueStore.allinstances的组合框。 当用户更改组合中的拾取值时,可以将该值分配给视图模型变量vPickedTime。
我还会有一个DateTimePicker,用于在vPickedDate中设置一个日期。
在名为“ Apply”的按钮中,我将具有以下表达式:self.TheDateTimeFinallyChoosen:= vPickedDate.Add(vPickedTime)
答案 1 :(得分:1)
这不能解决选择列表问题,但请看一下MDriven Wiki中“派生可设置属性”中的示例。
使用派生的可设置属性可能是消除UI控件复杂性的好方法。
https://wiki.mdriven.net/index.php/Derived_settable_attributes