【问题标题】:Data Templates And List Box数据模板和列表框
【发布时间】:2012-04-19 03:48:01
【问题描述】:

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

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

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

谢谢! (抱歉英语不好)

【问题讨论】:

    标签: c# wpf datatemplate


    【解决方案1】:

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

    读完所有的 Excel 数据后,就可以着手实现数据的呈现了。首先,为您的视图模型对象声明一个 DataTemplate。在这个 DataTemplate 中,将一个复选框绑定到您的布尔值,并将一个文本块/标签绑定到您的字符串。接下来,声明一个ListBox 并将您的视图模型列表实例绑定到ListBox.ItemsSource。如果您做的一切正确,您应该会看到一个列表框,其中每一行都包含一个复选框和一个描述。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多