0

我是 WPF 开发的新手,我正在寻找有关我的应用程序中的循环数据绑定模式的建议。

在我正在使用的数据库中,大量使用了测量单位和相关值。

为了演示,这里有一些精简的表结构,可能会为我必须使用的内容提供一些线索:

样品表

  • (...)
  • 数量
  • 测量单位 ID
  • (...)

样品表2

  • (...)
  • 速度
  • 距离测量单位 ID
  • TimeMeasurementUnitId
  • (...)

样品表3

  • (...)
  • 距离
  • 测量单位 ID
  • (...)

SampleTableN(等...)

  • (...)
  • 重量
  • WeightMeasurementUnitId
  • 体积
  • VolumeMeasurementUnitId
  • (...)

测量单位

  • ID
  • 测量单位类型 ID
  • 简称
  • 转换因子
  • (...)

测量单位类型

  • ID
  • 简称
  • (...)

我希望这些名字不言自明。:)

系统的工作方式,存储的值必须全部采用默认系统单位。用户在 UI 中写入 10 米不会将值存储为 10,它会转换为之前的系统值。例如,对于距离值,如果距离单位类型的默认测量单位是厘米,则存储的值实际上是 1000,因为 1000 厘米 = 10 米。

但是,用户使用的测量单位仍存储在数据库中。这是为了确保下次他再次在 UI 中打开记录时,他实际上看到的是 10 米,而不是 1000 厘米。当然也必须在那里进行转换。

每个单位测量类型有一个系统单位。它是将 ConversionFactor 设置为 1 的那个。其他测量单位有一个与此相关的 ConversionFactor。收回上面更高的距离示例:

  • 厘米:1
  • 男:100
  • 公里:100 000
  • (ETC。)

在 UI 中,我想使用一个文本框来编写数字和一个组合框,该组合框根据上下文在单位类型上过滤了测量单位。当用户加载数据时,它必须显示为输入(根据相关的测量单位转换)。当他键入值时,绑定机制必须根据当前选择的测量单位的 ConversionFactor 将正确的转换值写回到实体类中。

当他选择测量单位时,根据他的个人设置,可能会发生两件事:

  • 显示的号码改变,存储的号码保持不变
  • 显示的数字保持不变,存储的数字被转换

现在我的问题是......我可以封装多少这种功能以便于重用?最好的方法是什么?

请注意,有时我可能需要单独显示这些字段。例如,在网格中,我想要一个用于数字部分和单位部分的列。这是为了允许单独在单元上进行过滤和排序。

我不介意每次都必须重新创建单元列表/组合/任何控件。我主要对重用单位转换部分感兴趣。

感谢您阅读本文(哇!)以及您能想到的任何想法。:)

4

1 回答 1

0

如果您是 WPF 新手,首先应该学习Model-View-ViewModel模式。

如果您以这种方式构建应用程序,您可以创建一个通用 ViewModel 类型以用于所有单元列表/组合/任何控件,它封装了执行单元转换的逻辑。

于 2013-07-31T14:26:36.807 回答