WPF动态数据架构

时间:2010-03-04 18:56:10

标签: c# wpf architecture

所以我在使用一些动态数据元素构建特定解决方案时遇到了一些困难......

所以我有两个地方存储数据 - 数据库和pdf(虽然我只写pdf - 我从来没有读过它)。您可以认为pdf的工作方式与数据库非常相似 - 除了表格和pdf的模式不同之外。不同的字段将进入数据库和pdf。用户将能够编辑某些字段 - 但不能编辑所有字段。我正在努力在这里强制分离UI和逻辑,但我遇到了困难。我的逻辑基本上是要告诉我的UI要创建哪些UI元素以及对它们实施哪些限制(必需,选项等)所以我觉得有点像我在我的业务逻辑中创建UI;但我真的不知道如何用动态数据元素做到这一点。完成后,我必须写入数据库,然后打印pdf。

你基本上可以把这个问题想象成......“我有大量不同的数据。我需要用不同的数据来做不同的事情。我无法想出一种方法来做到这一点而不做一些编码暴行。“有没有人有任何想法?

2 个答案:

答案 0 :(得分:1)

您正在做的是开发应用程序框架,而不是应用程序。您可以通过查看其他应用程序框架(其中有十亿个)来了解其他人如何解决问题。

我现在可以告诉你,你的项目将成功与你设计处理元信息的方案的成功程度成正比。 Steve McConnell的一般规则是数据比代码更容易调试,这几乎是这类项目的指导灯。

WPF真的非常适合这种事情。我一直在将我自己的应用程序框架从Windows Forms移植到WPF,并且对于我不需要编写多少代码感到惊讶。

答案 1 :(得分:0)

如果我是你,我会查看有关用户需要查看/编辑的字段的所有信息,并查看我可以看到的常见主题。看看你的问题,我可能会创建一个包含以下内容的类/结构:

struct FieldInfo
{
    string FieldName;
    string DisplayName;
    string DataType;
    bool Required;
    delegate Validator;
    string OldValue;
}

delegate bool Validator(string input, out string message);

我会从Business Logic返回FieldInfo [],然后在UI中使用该数组来确定向用户显示的内容。这样,即使验证登录也是您的业务logis(使用委托),UI只需要决定为每种类型显示哪些元素。您甚至可以更进一步,让FieldInfo结构具有一个元素名称,告诉UI该字段使用哪个元素(文本框,DDL等)