MDriven中的字符串收集器/常量(用于时间选择列表)

时间:2018-07-04 16:00:04

标签: mdriven

目标是为MDriven中的视图模型创建日期时间选择器。

在日期方面,通过设置日期类型的set变量很容易实现。

在时间方面,由于明显的原因,由于时间类型不存在,因此似乎有些棘手。

(是的,在您提出这样的建议之前,我已经阅读过How do I set Date AND time picker in MDriven?,但并没有完全帮助您。

上下文:

我们试图通过允许用户在Int形式的列中写入所需的时间并实施约束来禁止用户编写除“ hhmm”之外的内容的方法来解决此问题。尽管此方法有效,但不切实际,并且会降低用户体验。

理想情况下,我们希望有一个选择列表,用户可以在其中选择预设时间(即16:00、16:30、17:00等)。这样,所选时间的格式将永远不会破坏我们以后要使用时间的框架,因为它受到限制。

问题:

如何实现?当然可以使用一种方法来创建常量(例如硬编码的,仅可见的变量),或者您可以为此使用特定的运算符来收集字符串实例?

2 个答案:

答案 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