gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:54 24 4
gpt4 key购买 nike

所以看起来我想做的事情应该很简单,但我一直没能找到方法...

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

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

最佳答案

好吧,就想要使用 ObservableCollection<T> 而言,您走在正确的轨道上和一个 ListBox控制。不过,我敢说您可能只想使用 ItemsControl 因为您可能不关心选择特定项目,而只是显示项目的枚举,以及 ListBox将允许您实际选择其中一项。

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

基本上,一个 DataTemplate是一种表达“我希望我的元素看起来像这样。”的方式,还有一个DataTemplateSelector是一种表达“我想根据这个标准选择这个特定的 DataTemplate”的方式。


这里有一些关于如何使用 DataTemplate 的例子/DataTemplateSelector类:

关于c# - 自定义用于显示 ObservableCollection 内容的 FrameworkElements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17558034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com