2014-12-12 2 views
1

У меня есть список, заполненный элементами, некоторые из этих элементов имеют вторую строку, связанную с ними.wpf Listview Как сделать подтекст

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

Вот как я сейчас добавляю вещи в список.

listview.Items.Add(New With {Key .name = "First Line" & vbNewLine & "Second Line", .path = path}) 

Мои ListView XAML

<ListView Background="transparent" Margin="10 10 10 10" x:Name="listview" HorizontalAlignment="Stretch" VerticalContentAlignment="center" VerticalAlignment="Stretch" BorderBrush="Transparent"> 
        <ListView.View> 
         <GridView> 
          <GridViewColumn Header="name" Width="790" DisplayMemberBinding="{Binding name}" /> 
          <GridViewColumn Header="path" Width="0" DisplayMemberBinding="{Binding path}" /> 
         </GridView> 
        </ListView.View> 

Вот картина того, что я есть в данный момент, так что вы можете увидеть, что я имею в виду. enter image description here

+2

вместо того, чтобы использовать разрыв строки, вы должны определить новое свойство вашего элемента 'subname', и Вы можете настроить стиль 'ItemTemplate' для отображения другого стиля для' subname'. [Вот учебник] (http://tech.pro/tutorial/742/wpf-tutorial-using-the-listview-part-1). – Bolu

+0

Вы можете использовать прогоны, но было бы проще с шаблоном, предложенным Bolu – Paparazzi

+0

Я обновил свой вопрос. Как я могу реализовать itemtemplate с моим текущим xaml? – Mattigins

ответ

0

Предлагаю сделать класс для связанных данных. Заполните класс информацией и добавьте свойство Items.

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

XAML

<ListView Background="transparent" 
     Margin="10 10 10 10" 
     x:Name="listview" 
     HorizontalAlignment="Stretch" 
     VerticalContentAlignment="center" 
     VerticalAlignment="Stretch" 
     BorderBrush="Transparent"> 
    <ListView.View> 
    <GridView> 
     <GridViewColumn Header="name" 
         Width="400" > 
     <GridViewColumn.CellTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Vertical"> 
        <TextBlock FontSize="25" 
           Text="{Binding FirstLine}" /> 
        <TextBlock FontSize="15" Foreground='Orange' 
        Text="{Binding SecondLine}" /> 
      </StackPanel> 
    </DataTemplate> 
     </GridViewColumn.CellTemplate> 
    </GridViewColumn> 
     <GridViewColumn Header="path" 
         Width="200" 
         DisplayMemberBinding="{Binding Path}" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

Код

Class MainWindow 
    Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded 
    For index = 1 To 5 
     listview.Items.Add(New BoundDocument With {.FirstLine = index.ToString("D2") & " First Line", 
                .SecondLine = "Second Line --" & index.ToString("D2"), 
                .Path = "Path " & index}) 

    Next 
End Sub 
End Class 

Public Class BoundDocument 
    Public Property FirstLine As String 
    Public Property SecondLine As String 
    Public Property Path As String 

End Class 

Скриншот enter image description here

Смежные вопросы