WPF: ListView с просмотром значков? - PullRequest
9 голосов
/ 27 января 2009

Я не могу понять, как я могу реализовать представление значков в WPF ListView (представление, похожее на Windows Explorer). Выполняя поиск в Google, я нашел только информацию о реализации GridView, но никаких подсказок о представлении иконок. Я не говорю о System.Windows.Form.ListView, но System.Windows.Controls.ListView.

Возможно, для этого есть другой элемент управления? Я не нашел ничего актуального по этому поводу?

Я нашел только некоторых людей, которые строят представление значков вручную, используя список и меняя шаблон панели и шаблон. Я не могу поверить, что это единственный способ сделать это.

Есть какие-нибудь подсказки?

Заранее спасибо

Ответы [ 4 ]

10 голосов
/ 27 января 2009

РЕДАКТИРОВАТЬ Похоже, я неправильно понял, что вы имели в виду в представлении Проводника ... У меня установлено "Детали"; ...


В WPF нет такого понятия, как представление значков, вам придется реализовать его самостоятельно, но вам не нужно делать все с нуля.

Вы можете использовать ListView в сочетании с GridView и хотя бы одним CellTemplate для столбца, который содержит значок.

Общая схема будет выглядеть примерно так для вида, подобного проводнику Windows:

<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>
8 голосов
/ 27 января 2009

То же, что и ответ Танвира Бадара, но с WrapPanel вместо UniformGrid Установите следующее в вашем списке:

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

чтобы принудительно обернуть WrapPanel.

7 голосов
/ 27 января 2009

Просто с моей головы, ты пробовал это?

<Style TargetType="ListBox">
  <Setter Property="ItemsPanel">
    <Setter.Value>
      <ItemsPanelTemplate>
        <UniformGrid/>
      </ItemsPanelTemplate>
    </Setter.Value>
  </Setter>
</Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...