WPF ListView中的流图标视图

时间:2015-08-21 13:54:34

标签: c# .net wpf xaml listview

我是WPF的新手,作为一个学习项目,我选择了像文件管理器这样的Windows资源管理器。在这个项目中,我想将List视图显示为遵循流布局模式的图标列表。我尝试了这里给出的解决方案:WPF: ListView with icons view?。但是他们让我的图标相互重叠。我的图标基本上是动态加载的用户控件。这是我的用户控件代码,代表列表视图图标:

<UserControl x:Class="MVCP.FileItem"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" Height="156.767" Width="161.279">
    <Grid HorizontalAlignment="Center">
        <Image HorizontalAlignment="Center" Height="100" Margin="10,10,10,0" VerticalAlignment="Top" Width="141" Source="fileflat.png"/>
        <TextBlock HorizontalAlignment="Center" Margin="10,120,10,5" TextWrapping="Wrap" Text="&lt;Filename&gt;" VerticalAlignment="Center" Height="32" Width="141" FontSize="18" Foreground="White" TextAlignment="Center"/>
    </Grid>
</UserControl>

这是我的ListView代码:

<ListView x:Name="files" Background="#FF19174B" AllowDrop="True" ScrollViewer.HorizontalScrollBarVisibility="Disabled" PreviewMouseLeftButtonDown="files_PreviewMouseLeftButtonDown" MouseMove="files_MouseMove">
    <local:FileItem/>
    <local:FileItem/>
    <local:FileItem/>
    <local:FileItem/>
</ListView>

如何安排这些用户控件,使它们看起来像Windows资源管理器图标?

2 个答案:

答案 0 :(得分:1)

@AbinMathew给了我一个使用Panels的提示。所以,我改变了我的代码并且它有效。 :)

<ListView x:Name="files" Background="#FF19174B" AllowDrop="True" ScrollViewer.HorizontalScrollBarVisibility="Disabled" PreviewMouseLeftButtonDown="files_PreviewMouseLeftButtonDown" MouseMove="files_MouseMove">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <ListView.ItemTemplate>
        <DataTemplate>
            <DockPanel>
                <local:FileItem/>
            </DockPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
    <local:FileItem/>
    <local:FileItem/>
    <local:FileItem/>
    <local:FileItem/>
</ListView>

答案 1 :(得分:0)

尝试在panel

中添加任何ListView
<ListView x:Name="files" Background="#FF19174B" AllowDrop="True" ScrollViewer.HorizontalScrollBarVisibility="Disabled" PreviewMouseLeftButtonDown="files_PreviewMouseLeftButtonDown" MouseMove="files_MouseMove">
 <StackPanel>
   <local:FileItem/>
   <local:FileItem/>
   <local:FileItem/>
   <local:FileItem/>
 </StackPanel>
</ListView>