自定义用于显示ObservableCollection内容的FrameworkElements

本文关键字:FrameworkElements ObservableCollection 用于 显示 自定义 | 更新日期: 2023-09-27 18:21:39

所以我想做的似乎应该很简单,但我一直没能找到方法…

我需要显示一个对象列表,这些对象表示用于输入数据的自定义元素。每个对象的具体显示方式取决于对象的参数,因此它可以是一个包含名称、说明和文本框的网格。它可以是一个带有几个标签和下拉列表的网格。它可以是一个包含多个子对象的扩展器。它可能是尚未构建的新东西(因此它需要是可扩展的)。现在,我正在通过为每个对象创建FrameworkElement,然后手动将其添加到网格来填充此列表。

我想切换到将我的对象保存在ObservableCollection中,然后将该集合绑定到ListBox(或类似的)。这样,当从列表中添加或删除新对象时,UI会相应地自动更新自己。我想不通的是,有没有一种方法可以把它指向我的C#方法,为每个对象创建自定义配置的FrameworkElement,这样当添加新对象时,适当的元素就会添加到UI中?

自定义用于显示ObservableCollection内容的FrameworkElements

好吧,您想要使用ObservableCollection<T>ListBox控件是正确的。不过,我冒昧地说,您可能只想使用ItemsControl,因为您可能不关心选择特定项目,而只关心显示项目的枚举,而ListBox将允许您实际选择其中一个项目。

您的问题是,您希望列表中的每个项目根据特定条件以不同的方式显示。为此,您需要查看DataTemplateDataTemplateSelector类。

基本上,DataTemplate是表示"我希望我的项目看起来像这样。"的一种方式,DataTemplateSelector是表示"我想根据此标准选择此特定数据模板。"


以下是一些关于如何使用DataTemplate/DataTemplateSelector类的示例:

  • http://tech.pro/tutorial/807/wpf-tutorial-how-to-use-a-datatemplateselector
  • http://mikestedman.blogspot.com/2009/04/datatemplateselector.html
  • http://wpftutorial.net/DataTemplates.html

将演示文稿与模型分离总是一个好主意。你似乎走在了正确的轨道上。

对于每个对象类型,您应该创建一个DataTemplate,然后使用ItemTemplateSelector为每个对象类型选择正确的模板。

祝好运

相关文章:
  • 没有找到相关文章