【问题标题】:ListBox of anonymous UIElements匿名 UIElements 列表框
【发布时间】:2013-08-16 21:27:53
【问题描述】:

我想创建一个ListBox 并用匿名UIElement 填充它。换句话说,ItemTemplateDataTemplate 将只包含一个元素,并且在运行时后记,之后我将在不同的UIElements 后面的代码中创建(TextBlocks,Grids .. .) 并用它填充列表。

那我要怎么写ListBoxDataTemplate呢?我打算如何将ObservableCollection 用于ItemSource?所以应该使用ObsevableCollectionUIElement 吗?

【问题讨论】:

  • 不建议使用包含任何 UI 元素的列表。引入一些模型-视图-分离,例如MVVM。

标签: c# wpf silverlight listbox uielement


【解决方案1】:

第一个问题: DataTemplate。由于您的项目已经是UIElements,因此您不需要DataTemplate

如果您要创建一个可更改的集合,那么是的,ObservableCollection<UIElement> 是您的最佳选择。

现在,为什么你会这样做?你可能想问问自己这是否是最好的做事方式。为什么您的数据和演示文稿没有分开?如果您需要列表中不止一种类型的元素,DataTemplateSelector 是否允许您拥有真正的ViewModel

【讨论】:

  • 我想要的是一个包含 TextBlocks 的 TextBlocks 和 Grids 的列表。我想使用 then 以便用户单独标记和编辑每个文本块,然后我根据用户选择填充列表,无论是网格还是 TextBlock。
  • 好的,听起来您应该使用DataTemplateSelector。您可以在 ListBox 上添加 ItemTemplateSelector
【解决方案2】:
    <ListBox x:Name="name" ItemsSource="{Binding source}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <textbox x:Name="name"></ToggleButton> //or any tool
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    相关资源
    最近更新 更多