首页 > 解决方案 > MDriven 中的字符串收集器/常量(用于时间选项列表)

问题描述

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

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

当涉及到时间方面,它似乎有点棘手,因为时间类型不存在,原因很明显。

(是的,在您提出建议之前,我已经阅读了如何在 MDriven 中设置日期和时间选择器?它并没有完全帮助。

语境:

我们试图通过让用户在 Int-form 列中写入他们想要的时间并实施禁止用户编写除“hhmm”之外的其他内容的约束来解决这个问题。虽然这很有效,但它并不实用,并且会减慢用户体验。

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

问题:

这怎么可能达到?当然有一种方法可以创建常量(如硬编码的、单独可见的变量),或者您可以使用特定的运算符收集字符串实例以供此用途?

标签: mdriven

解决方案


我认为您需要一组常用值可供选择。但可能选择的值可以由用户更改。

我会声明一个 TimeValueStore 类。在这个类中,我将有一个属性,它只包含日期时间的时间部分,所以 0000-00-00 16:00。我会添加一个管理 UI 来维护这些。(我可以使用 DateTime.Parse(vTimeStringValue) 从字符串中解析出 DateTime)。

在 UI 中,我可以有一个带有 TimeValueStore.allinstances 的组合框。当用户更改组合中选取的值时,该值可以分配给视图模型变量 vPickedTime。

我还会有一个 DateTimePicker,它在 vPickedDate 中设置一个日期。

在一个名为“应用”的按钮中,我会有这个表达式:self.TheDateTimeFinallyChoosen:=vPickedDate.Add(vPickedTime)


推荐阅读