wpf Listview如何制作子文本

时间:2014-12-12 15:55:09

标签: wpf listview

我有一个填充了项目的列表视图,其中一些项目与它们相关联。

我想知道是否有一种方法可以设置第二行的样式,因此它可以是较小的字体,甚至可以改变它的颜色。

这就是我目前正在向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

1 个答案:

答案 0 :(得分: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