2013-08-16 42 views
0

我想创建一个ListBox并填写匿名UIElement。换句话说,ItemTemplateDataTemplate将只包含一个元素,并且在运行期间的后缀中,之后我将在代码后面创建不同的UIElementTextBlock s,Grid s ...),并用它填充列表。匿名UIElements列表框

那么我该怎么写ListBoxDataTemplate?我打算如何使用ObservableCollection作为ItemSource?那么应该使用UIElementObsevableCollection

+0

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

回答

2

第一个问题:DataTemplate。由于您的物品已经是UIElement s,因此您不需要DataTemplate

如果你正在创建一个可更改的集合,那么是的,ObservableCollection<UIElement>是要走的路。

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

+0

我想要的是包含TextBlocks的TextBlocks和Grids的列表。然后我想要使用,以便用户可以单独标记和编辑每个文本块,并且在此之前,根据用户选择填充列表,然后根据用户选择网格先到达还是TextBlock。 –

+0

好吧,听起来你应该使用'DataTemplateSelector'。你可以在ListBox中分配'ItemTemplateSelector'。 –

0
<ListBox x:Name="name" ItemsSource="{Binding source}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <textbox x:Name="name"></ToggleButton> //or any tool 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox>