2009-02-13 55 views
0

我正在教自己的WPF過程中,並且遇到了一個我找不到答案的小問題。WPF將DataTable綁定到重複的用戶控件

我的測試應用程序允許將圖像文件放入StackPanel。一旦圖像被丟棄,一個新的用戶控件被添加到堆棧中,並顯示一些關於該文件的元數據。所有工作正常,我可以通過子控件迭代來檢索值。

我希望能夠做的是允許用戶將這些數據保存到一個文件中,以便他們可以暫停處理數據。我這樣做的一個顯而易見的方法是將數據存儲在DataTable中,然後將它串行化/反序列化爲xml。但是,我不知道如何從DataTable或DataSet對象中驅動用戶控件的集合 - 實際上,我甚至不知道這是否是在WPF應用程序中使用它的正確方法。我非常願意在這裏承認我的無知,並且如果有任何更好的建議。

應用邏輯摘要。

1)文件(從運資源管理器)滴到一個StackPanel
2)文件觸發一個新的用戶控制,其被添加到的StackPanel
3)數據在用戶控制被填充的創建
4 )處理數據涉及遍歷控件集合。

我想什麼

1)文件(從運瀏覽器)到一個StackPanel
2)文件數據插入到一些持久化對象(數據表中刪除?)
3)更新後的數據表驅動要生成的用戶控件添加到顯示的集合中。
4)保存/加載功能保留數據以供稍後重新使用。

在此先感謝

回答

3

你在正確的軌道上第二個方法,你需要了解一下什麼是ItemsControl的 - 這是它可以有項目添加到它的事情。這是ListBox等的基礎,你可以template it to work as you require。然後有一個DataTemplate處理當一個項目被添加到底層數據結構時顯示哪些控件和數據綁定到這些控件。網上有不少例子,試試Dr WPF

爲了使一切正常工作,基礎數據結構必須支持更改通知。當所有事情都自動發生時,一旦Xaml被設置,你就會發現自己處於一種奇怪的狀態。您已將數據添加到數據結構中,這反過來又導致控件和數據出現在ItemsControl中。你如何鏈接數據項目和他們的視覺控制。答案是使用一些內置的靜態方法ItemFromContainer,它從圖形鏈接到您的基礎數據項,對處理點擊事件很有用,而ContainerFromItem則反過來。