6

我有一个绑定到对象集合的项目控件。该对象有两个属性(名称、值),我分别在文本块和文本框中显示。该列表很长,我想在两列中显示它。所以我的问题是,有什么方法可以让 Itemscontrol 在两列中显示其项目?

PS:集合是在运行时填充的,我不知道我要展示多少项目!

4

2 回答 2

13

使用 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;
于 2009-09-20T17:26:54.927 回答
7

我倾向于将项目放在 WrapPanel 中,然后将面板的宽度设置为项目宽度的 2 倍。这给了我带有任意数量元素的漂亮列。如果您的项目宽度不同,我将每个项目放在其自己的固定宽度的 Grid 或 StackPanel 中。

于 2009-09-20T10:11:28.507 回答