2012-01-18 60 views
14

3つのテキストボックスと1つのボタンがあり、複数列のリストボックスにテキストボックス情報を入力したいとします。電話帳のようにリストボックスに保存されますWPFの複数列リストボックス

私は1つの列でそれを作る方法を知っていますlistbox1.Items.Add(TextBox1.text)。次の列に他のテキストボックスを追加するにはどうすればよいですか?私は、リストボックスまたはリストビューを使用したいが、私は

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

答えて

23

は、あなたがリンクをしたい参照して、今、リストビューまたはリストボックスにテキストボックスの情報を入力するにはどのようにいけないの.NET WPF

を使用していますa 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

をdocpanel!間違い - 自分の投稿を投稿するのではなく、あなたのQを編集しました。元に戻す... –

+0

xamlコード – user1156309

+1

でそれを使用するには、どうすればいいですか? –

21

、ListViewコントロールは、仕事を行います。しかし、ListBoxを使用したい場合や、ListBoxを使用したい場合は、GridでItemTemplateを使用してListBox自体に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 IE)を持っている他のケースに適用することができ巧妙なトリックです。

敬具、

+1

のコードは、 はItemTemplateプロパティの子であるため、でラップされています。 –

+0

あなたは正しいです:) –

1

使用グループボックスと

<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> 
関連する問題