2012-01-18 15 views
14

Ho 3 caselle di testo e 1 pulsante e voglio inserire le informazioni delle caselle di testo nella casella di riepilogo con multicolonna. come una rubrica telefonica che verrà salvata nella casella elencoListBox multicolore in WPF

So come farlo con una colonna listbox1.Items.Add(TextBox1.text). Come posso aggiungere le altre caselle di testo nelle colonne successive? Sto usando .NET WPF

voglio usare una casella di riepilogo o un controllo ListView, ma io non ora come inserire le informazioni delle caselle di testo nella casella di riepilogo o listview

vedi link http://i.stack.imgur.com/FtQ47.png

risposta

23

You want a ListView invece.

Qualcosa di simile a questo:

<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

! Errore: ho modificato la tua Q anziché postare la mia. Reverendo ... –

+0

grazie per la risposta rapida amico dovrei usarlo nel codice xaml – user1156309

+1

come posso inserire elementi usando codice C# –

21

Come Ray giustamente sottolinea, ListView farà il lavoro. Tuttavia se sei bloccato e/o vuoi usare ListBox puoi anche usare un ItemTemplate con Grid e impostare lo Grid.IsSharedSizeScope property sul ListBox stesso. Per esempio:

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

Questo è un trucco che può essere applicato anche ad altri casi in cui sono presenti più istanze di rete (ad esempio: uno per ListBoxItem come per questo caso) e vogliono condividere una colonna.

Con i migliori saluti,

+1

Il codice deve essere racchiuso in un perché è ora supportato figlio della proprietà ItemTemplate. –

+0

Hai ragione :) –

1

uso groupbox e 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>