2009-01-27 29 views
8

Tôi không thể tìm ra cách tôi có thể triển khai Chế độ xem Biểu tượng trong ListView WPF (một chế độ xem tương tự như Windows Explorer). Tìm kiếm trên google Tôi chỉ tìm thấy thông tin về việc triển khai GridView nhưng không có manh mối nào về Chế độ xem biểu tượng. Tôi không nói về System.Windows.Form.ListView nhưng System.Windows.Controls.ListView.WPF: ListView với chế độ xem biểu tượng?

Có thể có một điều khiển khác để thực hiện điều đó? Tôi không tìm thấy bất cứ điều gì liên quan về điều này?

Tôi chỉ tìm thấy một số người xây dựng chế độ xem biểu tượng bằng tay bằng cách sử dụng hộp danh sách và thay đổi paneltemplate và icontemplate. Tôi không thể tin đây là cách duy nhất để làm điều đó.

Bất kỳ manh mối nào?

Cảm ơn trước

Trả lời

8

Tương tự như câu trả lời Tanveer Badar, nhưng với một WrapPanel thay vì một UniformGrid. Đặt thông tin sau trong hộp danh sách của bạn:

ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
ScrollViewer.VerticalScrollBarVisibility="Auto"  

để buộc WrapPanel bị quấn.

6

Chỉ cần thoát khỏi đỉnh đầu của tôi, bạn đã thử điều này chưa?

<Style TargetType="ListBox"> 
    <Setter Property="ItemsPanel"> 
    <Setter.Value> 
     <ItemsPanelTemplate> 
     <UniformGrid/> 
     </ItemsPanelTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 
10

EDIT xuất hiện tôi hiểu lầm những gì bạn có nghĩa là với Explorer xem ... tôi có tôi thiết lập để chi tiết ...;) Tôi sẽ để lại câu trả lời của tôi lên đây trong trường hợp bất cứ ai làm cho sai lầm giống như tôi ...


Không có thứ gì như Chế độ xem biểu tượng trong WPF, bạn sẽ phải tự thực hiện, nhưng bạn không phải làm mọi thứ từ đầu.

Bạn có thể sử dụng ListView kết hợp với GridView và ít nhất một CellTemplate cho cột chứa biểu tượng.

Khái quát chung sẽ giống như thế này cho một Windows Explorer như xem:

<ListView> 
    <ListView.Resources> 
     <DataTemplate x:Key="IconTemplate"> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto"/> 
        <ColumnDefinition/> 
       </Grid.ColumnDefinitions> 
       <Image Grid.Column="0"/> 
       <TextBlock Grid.Column="1" Text="{Binding Name}"/> 
      </Grid> 
     </DataTemplate> 
    </ListView.Resources>    
    <ListView.View>  
     <GridView> 
      <GridViewColumn CellTemplate="{StaticResource IconTemplate}" Header="Name"/> 
      <GridViewColumn DisplayMemberBinding="{Binding Size}" Header="Size"/> 
      <GridViewColumn DisplayMemberBinding="{Binding Type}" Header="Type"/>      
     </GridView> 
    </ListView.View> 
</ListView> 
Các vấn đề liên quan