Многоколоночный ListBox в WPF

У меня есть 3 текстовых поля и 1 кнопка и вы хотите ввести информацию в текстовые поля в списке с многоколоночным. как телефонный каталог, который будет сохранен в списке

Я знаю, как сделать это с одним столбцом listbox1.Items.Add(TextBox1.text). Как добавить остальные текстовые поля в следующие столбцы? Я использую .net WPF

Я хочу использовать список или список, но теперь я не знаю, как вводить информацию в текстовые поля в списке или списке

см. ссылку http://i.stack.imgur.com/FtQ47.png

Ответы

Ответ 1

Вместо этого вы хотите ListView.

Что-то вроде этого:

    <ListView ItemsSource="{Binding SourceCollection}">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Test1" DisplayMemberBinding="{Binding Test1}" />
                <GridViewColumn Header="Test2" DisplayMemberBinding="{Binding Test2}" />
                <GridViewColumn Header="Test3" DisplayMemberBinding="{Binding Test3}" />
                <GridViewColumn Header="Button">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Button>Button Text</Button>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>

Ответ 2

Как правильно указывает Ray, ListView выполнит эту работу. Однако, если вы застряли и/или хотите использовать ListBox, вы также можете использовать ItemTemplate с сеткой и установить свойство Grid.IsSharedSizeScope на ListBox. Например:

<ListBox ItemsSource="{Binding DataSource}" Grid.IsSharedSizeScope="True">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" SharedSizeGroup="Column1"/>
                    <ColumnDefinition Width="Auto" SharedSizeGroup="Column2"/>
                    <ColumnDefinition Width="Auto" SharedSizeGroup="Column3"/>
                </Grid.ColumnDefinitions>
                <!-- Assumes MVVM and you wish to bind to properties and commands -->
                <TextBlock Grid.Column="0" Text="{Binding ColumnOneText}"/>
                <TextBlock Grid.Column="1" Text="{Binding ColumnTwoText}"/>
                <TextBlock Grid.Column="2" Text="{Binding ColumnThreeText}"/>
                <Button Content="ClickMe" Command="{Binding ButtonExecutionCommand}"/>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Это аккуратный трюк, который также можно применять к другим случаям, когда у вас есть несколько экземпляров Grid (то есть: по одному для ListBoxItem в соответствии с этим случаем) и хотите разделить столбец.

С уважением,

Ответ 3

использовать групповой пакет и docpanel

<GroupBox Width="250"
                          Margin="10,0,0,0"                          
                          FontSize="20"
                          Header="کسورات"
                          Style="{StaticResource Gb}">
                    <ListBox Margin="0" AlternationCount="2">
                        <ListBoxItem>
                            <Border Margin="0"
                                    BorderBrush="#ddd"
                                    BorderThickness="0,1,0,1">
                                <DockPanel Background="#f9f9f9" LastChildFill="True">


                                    <controls2:TimeEditBox DockPanel.Dock="Right"
                                                           FontSize="13"
                                                           Mask="00:00"
                                                           Text="00:00"
                                                           TextAlignment="Center"
                                                           controls2:TextBoxMaskBehavior.Mask="Integer" />
                                    <TextBox Width="50"
                                             Margin="0,0,5,0"
                                             DockPanel.Dock="Right"
                                             FontSize="13"
                                             Text="122"
                                             TextAlignment="Center"
                                             controls2:TextBoxMaskBehavior.Mask="Integer" />
                                    <TextBlock VerticalAlignment="Center"
                                               FontSize="13"
                                               Text="غیبت"
                                               TextAlignment="Center" />
                                </DockPanel>
                            </Border>
                        </ListBoxItem>

                </GroupBox>