我有一个绑定到对象集合的项目控件。该对象有两个属性(名称、值),我分别在文本块和文本框中显示。该列表很长,我想在两列中显示它。所以我的问题是,有什么方法可以让 Itemscontrol 在两列中显示其项目?
PS:集合是在运行时填充的,我不知道我要展示多少项目!
我有一个绑定到对象集合的项目控件。该对象有两个属性(名称、值),我分别在文本块和文本框中显示。该列表很长,我想在两列中显示它。所以我的问题是,有什么方法可以让 Itemscontrol 在两列中显示其项目?
PS:集合是在运行时填充的,我不知道我要展示多少项目!
使用 ListBox 并指定在其中放置 TextBlock 和 TextBox 的 DataTemplate。使用绑定来填充它们。有关更多示例,请参阅http://msdn.microsoft.com/en-us/library/ms742521.aspx。
<ListBox x:Name="TheListBox" Grid.IsSharedSizeScope="True">
<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;
我倾向于将项目放在 WrapPanel 中,然后将面板的宽度设置为项目宽度的 2 倍。这给了我带有任意数量元素的漂亮列。如果您的项目宽度不同,我将每个项目放在其自己的固定宽度的 Grid 或 StackPanel 中。