2010-03-04 45 views
1

所以我在與架構與一些動態數據元素的特定解決方案的難度一定程度....WPF動態數據架構

所以我有兩個地方我存儲的數據 - 一個數據庫和pdf(儘管我只寫信給pdf - 我從來沒有讀過它)。您可以將PDF看作很像數據庫 - 除了表格和PDF的模式不同之外。不同的領域將進入數據庫和PDF。用戶將能夠編輯某些字段 - 但不是所有字段。我努力在這裏強制實現UI和邏輯的分離,但我遇到了困難。我的邏輯基本上必須告訴我的UI需要創建哪些UI元素以及對它們施加什麼限制(必需的,選項等),所以我覺得有點像我在業務邏輯中製作UI;但我真的不知道如何使用動態數據元素來做到這一點。完成後,我必須寫入數據庫,然後打印PDF。

你基本上可以把這個問題想象成......「我有很多不同的數據,我需要用不同的數據做不同的事情,我不能想出一種方法來實現這一點,一些編碼暴行。「有沒有人有任何想法?

+0

看到您使用的是WPF,我假設您已經在使用C#3和.NET 3.5。你是否也在使用MS-SQL Server? – 2010-03-04 19:46:51

回答

0

如果我是你,我會查看所有關於用戶需要查看/編輯的字段的信息,並查看我可以看到的常見主題。看着你的問題我可能會創建一個類/結構,它包含以下內容:

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

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

我會從業務邏輯返回的FieldInfo [],然後在UI使用該陣列,以確定哪些顯示給用戶。這樣,即使驗證登錄是您的業務邏輯(使用委託),用戶界面只需決定爲每種類型顯示哪些元素。你甚至可以更進一步,並讓FieldInfo結構有一個元素名稱告訴UI該字段使用什麼元素(Textbox,DDL等)

+0

這幾乎是我一直在做的事情;它只是看起來有點黑客。謝謝,不過。 – Aaron 2010-03-04 19:21:06

1

你正在做的是開發一個應用程序框架,而不是應用。您可以通過查看其他應用程序框架(其中有10億)來了解其他人如何解決問題。

我現在可以告訴你,你的項目將會成功與你設計處理元信息的方案的成功程度成正比。史蒂夫麥康奈爾的數據比代碼更容易調試的一般規則幾乎是這類項目的指導燈塔。

WPF確實非常適合這種事情。我一直在將自己的應用程序框架從Windows窗體移植到WPF,並對我不必編寫多少代碼感到驚訝。

+0

對某些數據可能發生的情況應用一些規則是可以的,並且與演示無關;是的,您需要提供某種類型的介紹 - 但期望邏輯層支配這些規則是合理的。 – 2010-03-04 23:01:23