在两列(WPF)中显示itemscontrol中的项目

6 .net wpf itemscontrol

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

PS:该集合在运行时填充,我不知道有多少项目我必须展示!

Lar*_*ens 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;
Run Code Online (Sandbox Code Playgroud)

  • 当我在ItemsControl(而不是ListBox)上尝试这个时,我不得不在ItemsControl上设置一个属性:Grid.IsSharedSizeScope ="True"以使其工作. (10认同)

Dav*_*kle 6

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