数据模板和列表框

时间:2012-04-18 19:35:00

标签: c# wpf datatemplate

在我的应用程序中,我有一个列表框,其ItemTemplate上有一个数据模板,带有一些文本块和复选框。 我使用这个应用程序加载excel表,读取其内容并将一些itens添加到列表框(目标是创建一个文本块用于描述和一个事件的复选框)。

我的第一个想法是使用DataGrid,但是,当我正在阅读工作表时,我必须为复选框创建事件(每个CB一个事件),但我无法使用DataGrid。 然后,我使用ItemTemplate中的数据模板转到列表框选项。但是当我使用ContentPresenter时,我被困在“null”问题对象上(从我读到的内容来看,这是因为列表框中的项目没有“准备就绪”,WPF上的一些错误)。

那么,还有另一种“自动化”的方法吗?或者我必须创建每个文本块和复选框?

谢谢! (抱歉英语不好)

1 个答案:

答案 0 :(得分:1)

实现这一点的正统方法是构造一个视图模型对象来表示要显示的每个项目。此视图模型可能包含bool属性和用于保存数据的字符串属性。在解析Excel工作表时,为每个条目构建视图模型的实例,将数据放入其中,然后将其添加到列表中

阅读完所有Excel数据后,您可以继续实施数据显示。首先,为视图模型对象声明一个DataTemplate。在此DataTemplate中,将复选框绑定到bool,将textblock / label绑定到字符串。接下来,声明ListBox并将您的视图模型列表实例绑定到ListBox.ItemsSource。如果你做的一切都正确,你应该看到一个列表框,每行包含一个复选框和一个描述。

注意:如果您希望用户能够修改视图模型中的数据,请确保在视图模型对象上实现INotifyPropertyChanged并在DataTemplate中使用TwoWay绑定。