2012-07-21 29 views
15

Tôi muốn thay đổi khoảng cách giữa các mục trong ListView (? Có lẽ tôi nên sử dụng khác xem phần tử) Mã trông như thế này:Windows8 ListView và không gian giữa các mục

<ListView SelectionMode="None" HorizontalContentAlignment="Left" > 
     <ListView.Items> 
      <TextBlock Text="Item 1" /> 
      <TextBlock Text="Item 2" /> 
      <TextBlock Text="Item 3" /> 
      <TextBlock Text="Item 4" /> 
     </ListView.Items> 
     <ListView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapGrid Orientation="Horizontal" HorizontalChildrenAlignment="left"/> 
      </ItemsPanelTemplate> 
     </ListView.ItemsPanel> 
    </ListView> 

Tôi muốn bắt chước càng nhiều càng tốt bình thường stackpanel (wchich có thể bọc các phần tử). Hiện nay không gian (ngang không gian) giữa các mặt hàng là quá lớn. câu hỏi trước đây của tôi ->Windows 8 WrapPanel

Cảm ơn trước

Trả lời

25

Bạn cần thực hiện thay đổi đối với mẫu mặc định. Nếu bạn chỉ muốn thực hiện thay đổi đơn giản như padding và lợi nhuận sau đó bạn có thể làm điều này: (thử nghiệm mã và nên làm việc)

  <ListView> 
     <ListView.ItemsPanel> 
       <ItemsPanelTemplate> 
        <WrapGrid Orientation="Horizontal" HorizontalChildrenAlignment="left"/> 
       </ItemsPanelTemplate> 
      </ListView.ItemsPanel> 
     <ListView.ItemContainerStyle> 
       <Style TargetType="ListViewItem"> 
        <Setter Property="Padding" Value="0"/> 
        <Setter Property="Margin" Value="0"/> 
       </Style> 
      </ListView.ItemContainerStyle> 
      <ListViewItem> 
       <TextBlock Foreground="Wheat">hej</TextBlock> 
      </ListViewItem> 
      <ListViewItem> 
       <TextBlock Foreground="Wheat">hej</TextBlock> 
      </ListViewItem> 
     </ListView> 

Để kiểm soát nhiều tạo một bản sao của toàn bộ mẫu mặc định bằng cách chọn một ListViewItem trong nhà thiết kế và quyền hành động. chọn chỉnh sửa mẫu, chỉnh sửa bản sao. Điều này sẽ tạo ra các mẫu mặc định và bạn có thể thực hiện thay đổi của bạn ở đó. Bạn có thể làm tương tự cho listviewcontainer. Bạn cũng có thể làm điều này bằng cách sử dụng Blend.

I've added a description and images here (how you can edit a default template)

Hãy cho tôi biết cách thực hiện và nếu bạn có thêm câu hỏi! Chúc may mắn!

EDIT:

MemeDeveloper đề cập dưới đây rằng ông vẫn còn có vấn đề và giải quyết nó bằng cách tinh chỉnh một số Properties- khác, ông gửi một mã số và trả lời ở đây, hãy chắc chắn để có một cái nhìn.

+0

Cảm ơn bạn đã trợ giúp :) Một câu hỏi nữa. Tôi đã gần như chắc chắn rằng nó nên được thực hiện theo cách của mình nhưng tôi không thể tìm thấy bất kỳ công cụ mà tôi có thể chỉnh sửa phong cách đó. Làm thế nào tôi có thể làm điều này trong Blend chẳng hạn? –

+2

Tôi đã đăng một bài đăng trên blog mà tôi đã bao gồm mô tả và hình ảnh về cách thực hiện trong VS hoặc pha trộn :) Hy vọng điều đó sẽ hữu ích! Đừng ngần ngại hỏi thêm câu hỏi v.v. Link: http://www.irisclasson.com/2012/07/22/example-winrtmetro-app-how-to-edit-default-template-in-visual-studio- 2012-and-blend/ –

+0

Thật tuyệt vời! Cảm ơn bạn rất nhiều :) –

2

Bạn cần phải chỉnh sửa thuộc tính ListBox.ItemContainerTemplate. Blend hoặc VS visual designer giúp giải nén nó để sửa đổi.

+0

... có và đặc biệt, trong đó thuộc tính ContentMargin và Padding của ListViewItemPresenter – MemeDeveloper

16

Theo như tôi biết (windows8.1 cửa hàng ứng dụng XAML), sau khi cài đặt hai để không

<ListView.ItemContainerStyle> 
       <Style TargetType="ListViewItem"> 
        <Setter Property="Padding" Value="0"/> 
        <Setter Property="Margin" Value="0"/> 

tôi vẫn có khoảng cách bực bội tôi dường như không thể thoát khỏi.

Sử dụng lợi nhuận tiêu cực ở đây có thể làm điều đó cho bạn, nhưng ... nó hacky, khó có thể làm việc với, và sẽ không luôn luôn dẫn đến kết quả mong đợi

Sau khi kéo tóc của tôi ra tôi thấy vấn đề này đã được giải quyết với những kẻ tức

ContentMargin = "0" Padding = "0"

Trong ListViewItemPresenter như sau:

 <ListView.ItemContainerStyle> 
      <Style TargetType="ListViewItem"> 
       <Setter Property="Padding" Value="0" /> 
       <Setter Property="Margin" Value="0" /> 
       <Setter Property="BorderThickness" Value="0" /> 
       <Setter Property="VerticalContentAlignment" Value="Top" /> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="ListViewItem"> 
          <ListViewItemPresenter ContentMargin="0" Padding="0" /> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ListView.ItemContainerStyle> 

Hy vọng rằng sẽ giúp tiết kiệm một người khác từ đập đầu họ liên tục trên bàn phím của mình;)

+1

Bạn đã lưu ngày của tôi, bạn đời :-) :-). Tôi đã cố gắng tìm ra điều này từ nhiều ngày. –

+0

Tôi đã dành hàng giờ để làm việc này, và có thể đã mất nhiều ngày nếu tôi không tìm thấy điều này! –

+0

Tôi vẫn cần ContentMargin phủ định để giảm lợi nhuận hơn nữa. –

1

Giải pháp cho eleminating lề trong mục GridView cho Windows 8.1 App Store. Lấy cảm hứng từ giải pháp ListView ở trên.

<GridView.ItemContainerStyle> 
<Style TargetType="GridViewItem"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="GridViewItem"> 
       <GridViewItemPresenter ContentMargin="0" Padding="0"/> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
</GridView.ItemContainerStyle> 
7

Tôi nghĩ rằng đúng ItemContainerStyle tài sản để sửa đổi ở đây là minheight, không Margin hoặc đệm.

Các vấn đề liên quan