2012-01-18 31 views
14

Tengo 3 cuadros de texto y 1 botón y quiero ingresar la información de cuadros de texto en el cuadro de lista con multicolumna. como un directorio telefónico que se guardará en el cuadro de listaMulticolumn ListBox en WPF

Sé cómo hacerlo con una columna listbox1.Items.Add(TextBox1.text). ¿Cómo puedo agregar los otros cuadros de texto en las siguientes columnas? Estoy utilizando .NET WPF

quiero usar un cuadro de lista o una vista de lista, pero yo no ahora cómo introducir la información de los cuadros de texto en la vista de lista o cuadro de lista

ver enlace http://i.stack.imgur.com/FtQ47.png

Respuesta

23

¿Quieres un ListView en su lugar.

Algo como esto:

<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> 
+0

! Error - Edité tu Q en lugar de publicar la mía. Revertiendo ... –

+0

gracias por la respuesta rápida amigo debería usarlo en el código xaml – user1156309

+1

cómo puedo insertar elementos usando el código C# –

21

Como Ray señala correctamente, ListView hará el trabajo. Sin embargo, si está atrapado y/o quiere usar ListBox, también puede usar una plantilla de elemento con cuadrícula y establecer el Grid.IsSharedSizeScope property en el propio ListBox. Por ejemplo:

<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> 

Este es un truco que también se puede aplicar a otros casos donde tiene varias instancias de la rejilla (es decir: una por ListBoxItem según este caso) y quiere compartir una columna.

Saludos,

+1

El código debe estar envuelto en una porque ahora se admite hijo de la propiedad ItemTemplate. –

+0

Tienes razón :) –

1

utilización cuadro de grupo y 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>