2012-01-18 78 views
14

我有3个文本框和1个按钮,并希望进入与列列表框中的文本框的信息。这样将保存在列表框中多列列表框在WPF

电话号码簿我知道如何与一列listbox1.Items.Add(TextBox1.text)做到这一点。我怎样才能在下一列添加其他文本框?我使用.NET WPF

我想用一个列表框或一个ListView,但我现在如何在列表视图或列表框中输入的文本框中的信息不

见链接http://i.stack.imgur.com/FtQ47.png

回答

23

你想改为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> 
+0

!错误 - 我编辑了你的Q,而不是发布我自己的。恢复... – 2012-01-18 13:52:08

+0

感谢您的快速回复朋友,我应该在xaml代码中使用它 – user1156309 2012-01-19 00:08:05

+1

如何使用c#代码向其插入项目? – 2012-04-30 07:49:36

21

正如雷正确地指出,ListView控件将做的工作。但是,如果你坚持和/或希望使用列表框,您还可以使用与电网一个ItemTemplate并设置列表框本身的Grid.IsSharedSizeScope property。例如:

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

这是一个巧妙的方法也可应用到你有网格的多个实例,其他情况下(即:每一个ListBoxItem一个按照这种情况下),并希望分享一列。

最好的问候,

+1

代码必须是包裹在一个因为现在支持ItemTemplate属性的孩子。 – 2014-07-09 06:40:46

+0

你是对的:) – 2014-07-09 09:34:43

1

使用组框和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>