2012-04-18 85 views
0

在我的應用程序中,我在他的ItemTemplate上有一個帶有數據模板的列表框,帶有一些文本塊和複選框。 我使用這個應用程序來加載Excel工作表,閱讀它的內容,並添加一些itens到列表框(目標是創建一個文本塊的描述和一個事件的複選框)。我的第一個想法是使用DataGrid,但是當我閱讀工作表時,我必須爲複選框創建事件(每個CB有一個事件),但我無法用DataGrid完成。 然後,我使用ItemTemplate中的數據模板進入列表框選項。但是當我使用ContentPresenter時(從我閱讀的內容來看,這是因爲列表框中的項目不是「準備就緒」,WPF上存在一些錯誤),所以我停留在「null」問題對象上。數據模板和列表框

那麼,還有另一種「自動化」的方法嗎?或者我必須創建每個文本塊和複選框?

謝謝! (對不起英語不好)

回答

1

實現這一點的正統方法是構造一個視圖模型對象來表示您想要顯示的每個項目。這個視圖模型可能包含一個bool屬性和一個字符串屬性來保存你的數據。在解析excel表格時,對於每個條目,構建視圖模型的實例,將數據放入其中,然後將其添加到列表中

讀完所有excel數據後,可以執行介紹你的數據。首先,爲視圖模型對象聲明一個DataTemplate。在這個DataTemplate中,將一個複選框綁定到你的bool,並將一個textblock/label綁定到你的字符串。接下來,聲明一個ListBox並將您的視圖模型列表實例綁定到ListBox.ItemsSource。如果你做的一切正確,你應該看到一個列表框,每一行都包含一個複選框和一個描述。

注意:如果您希望用戶能夠修改視圖模型中的數據,請務必在您的視圖模型對象上實現INotifyPropertyChanged,並在DataTemplate中使用TwoWay綁定。