我有一个绑定到对象集合的项控件。该对象有两个属性(名称,值),分别显示在文本块和文本框中。列表很长,我想在两列中显示它。所以我的问题是,有什么方法可以让Itemscontrol在两列中显示它的项目吗?
P.S:该集合在运行时填充,我不知道有多少项目需要展示!
答案 0 :(得分:11)
使用ListBox并指定一个DataTemplate,在其中放置TextBlock和TextBox。使用绑定来填充它们。有关更多示例,请参阅http://msdn.microsoft.com/en-us/library/ms742521.aspx。
<ListBox x:Name="TheListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Key" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" />
<TextBox Grid.Column="1" Text="{Binding Value }" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
TheListBox.ItemsSource = CollectionOfObjects;
答案 1 :(得分:6)
我倾向于将项目放在WrapPanel中,然后将面板的宽度设置为项目宽度的2倍。这给了我很好的列,任意数量的元素。如果您的项目宽度不同,我将每个项目放在自己的Grid或StackPanel中,固定宽度。