Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据模板和列表框_C#_Wpf_Datatemplate - Fatal编程技术网

C# 数据模板和列表框

C# 数据模板和列表框,c#,wpf,datatemplate,C#,Wpf,Datatemplate,在我的应用程序中,我在ItemTemplate上有一个带有数据模板的列表框,还有一些文本块和复选框。 我使用该应用程序加载excel工作表,读取其内容,并向列表框中添加一些iTen(目标是创建用于描述的文本块和用于事件的复选框) 我的第一个想法是使用DataGrid,但是,当我阅读工作表时,我必须为复选框创建事件(每个CB一个事件),但我不能使用DataGrid。 然后,我使用ItemTemplate中的数据模板转到列表框选项。但是,在使用ContentPresenter时,我遇到了“null”

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

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

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


谢谢!(很抱歉英语不好)

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

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

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