数据模板和列表框

本文关键字:列表 数据 | 更新日期: 2023-09-27 18:31:38

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

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

那么,还有另一种方法可以"自动化"这一点?或者我必须创建每个文本块和复选框?

谢谢!(对不起,英语不好)

数据模板和列表框

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

读取所有 Excel 数据后,您可以继续实现数据的表示。 首先,为视图模型对象声明一个数据模板。在此数据模板中,将复选框绑定到布尔值,将文本块/标签绑定到字符串。 接下来,声明一个ListBox并将视图模型列表实例绑定到 ListBox.ItemsSource 。 如果您正确执行了所有操作,您应该会看到一个列表框,其中每行都包含一个复选框和一个说明。

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