2009-11-10 16 views
3

我公司的產品核心是開發元數據驅動的用戶界面的框架。我不知道如何簡潔地描述它,並希望我不需要爲這個問題的目的,但我們會看到。我應該使用Expression Blend來設計真正動態的用戶界面嗎?

我一直在努力提高WPF的速度,並且一直在構建UI原型,最近我決定查看是否可以使用Expression Blend來幫助設計這些UI。在這一點上我很神祕。

在我看來,好像Expresssion Blend的設計目的是期望您已經知道在設計時將出現在UI中的所有對象。但是我們的程序在運行時動態生成這些對象。

例如,一個數據行可能會出現在水平StackPanel中,該水平StackPanel包含交替的TextBlocks(用於字幕)和TextBoxes(用於數據字段)。這些對象的數量取決於有關數據行中列數的元數據。我可以很容易地編寫通過元數據記錄運行的代碼,並動態地填充一個StackPanel,並將所有控件綁定到數據或元數據中的屬性。 (文本框的寬度可能綁定到元數據,而其文本綁定到數據。)

但我甚至無法開始弄清楚如何在Expression Blend中做這樣的事情。我可以手動創建所有這些控件,以便我可以將一組控件應用於樣式並制定出應用程序的視覺設計,但這樣做確實很痛苦。

我可以編寫通過我的數據模型併爲所有這些控件發出XAML的代碼,我想,然後複製並粘貼它。但是如果事實證明有一種方法可以在Expression Blend中做這種事情,我會感到非常愚蠢,因爲我太朦朧,無法想出正確的方式來思考它,所以我已經放棄了並被踢掉了。

這是足夠的信息有人嘗試制定答案?

回答

3

我認爲表達混合是一個非常好的選擇,特別是如果你想設計動態的,數據驅動的用戶界面。您可以使用Blend來設計定義如何將單個數據對象呈現給屏幕的DataTemplates。例如,如果您有一個Person類型的對象,您可以定義控件,如文本框,邊框等,然後自動生成列表中的每個人。 然後,您可以使用這些動態數據項填充ItemsControls(DataGrid,ListView,TreeView ...),並且WPF知道如何呈現它們。如果Persopn從列表中刪除,則生成的可視項目也將被刪除。這只是一個簡單的例子,動態數據的整個概念深入WPF中,您可以使用混合訪問這些功能。

爲了能夠設計表達式混合中的數據模板,您需要provide sample designtime data

如果您堅持使用MVVM設計,同樣對所有這些產品都有效。

相關問題