2012-01-18 71 views
14

Tôi có 3 hộp văn bản và 1 nút và muốn nhập thông tin hộp văn bản trong hộp danh sách có nhiều cột. giống như một thư mục điện thoại sẽ được lưu trong hộp danh sáchHộp danh sách nhiều cột trong WPF

Tôi biết cách tạo nó bằng một cột listbox1.Items.Add(TextBox1.text). Làm thế nào tôi có thể thêm các hộp văn bản khác trong các cột tiếp theo? tôi đang sử dụng .net WPF

tôi muốn sử dụng một ListBox hoặc một listview nhưng tôi không tại làm thế nào để nhập thông tin của các hộp văn bản trong listview hoặc listbox

thấy link http://i.stack.imgur.com/FtQ47.png

Trả lời

23

Bạn muốn thay vào đó, hãy thay thế một số ListView.

Something như thế này:

<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

! Sai lầm - Tôi đã chỉnh sửa câu hỏi của bạn thay vì đăng bài của riêng tôi. Hoàn nguyên ... –

+0

cảm ơn người bạn trả lời nhanh tôi nên sử dụng nó trong mã xaml – user1156309

+1

làm cách nào tôi có thể chèn các mục vào nó bằng cách sử dụng mã C# –

21

Như Ray một cách chính xác chỉ ra, ListView sẽ thực hiện công việc. Tuy nhiên nếu bạn đang mắc kẹt với và/hoặc muốn sử dụng ListBox bạn cũng có thể sử dụng một ItemTemplate với Grid và thiết lập các Grid.IsSharedSizeScope property trên ListBox chính nó. Ví dụ:

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

Đây là một thủ thuật gọn gàng mà cũng có thể được áp dụng cho các trường hợp khác, nơi bạn có nhiều trường hợp của lưới điện (ví dụ: một cho mỗi ListBoxItem theo trường hợp này) và muốn chia sẻ một cột.

Trân trọng,

+1

phải là được bọc trong hiện được hỗ trợ con của thuộc tính ItemTemplate. –

+0

Bạn nói đúng :) –

1

sử dụng GroupBox và 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> 
Các vấn đề liên quan