【问题标题】:Multiple lines of text in ListViewListView 中的多行文本
【发布时间】:2012-05-20 13:22:25
【问题描述】:

我正在尝试在 listView 中获取多行我目前有以下 XAML:

        <ListView x:Name="listTasks" Margin="0,0,1.5,0" Background="{x:Null}" BorderBrush="{x:Null}" BorderThickness="0" Foreground="White" ItemsSource="{Binding TasksCollection}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto">
        <ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}">
            <Style.Triggers>
                    <Trigger Property="IsSelected"
                                     Value="True">
                            <Setter Property="Background"
                                            Value="{x:Null}" />
                            <Setter Property="BorderBrush"
                                            Value="{x:Null}" />
                    </Trigger>
                    <Trigger Property="IsMouseOver"
                                     Value="True">
                            <Setter Property="Background"
                                            Value="{x:Null}" />
                            <Setter Property="BorderBrush"
                                            Value="{x:Null}" />
                    </Trigger>
            </Style.Triggers>
            <Setter Property="Height" Value="50px" />
            <Setter Property="Focusable" Value="false" />
    </Style>
</ListView.ItemContainerStyle>
        <ListView.Resources>
                <Style x:Key="CustomHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
                    <Setter Property="Visibility" Value="Collapsed" />
                </Style>
            </ListView.Resources>
            <ListView.View>
                <GridView ColumnHeaderContainerStyle="{DynamicResource CustomHeaderStyle}">
                    <GridViewColumn Header="">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock>
                                <TextBlock.Text>
                                    <MultiBinding  StringFormat=" Module: {0} Conditions: {1}|{2}|{3} for {4} minutes">
                                        <Binding Path="Module"/>
                                        <Binding Path="FirstValue"/>
                                        <Binding Path="SecondValue"/>
                                        <Binding Path="ThirdValue"/>
                                        <Binding Path="Minutes"/>
                                    </MultiBinding>
                                </TextBlock.Text>
                                </TextBlock>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>

这会输出如下内容:

我想要实现的是这样的(忽略不同颜色的背景):

我似乎无法思考如何做到这一点,有什么想法吗?

谢谢

【问题讨论】:

    标签: c# wpf xaml listview listviewitem


    【解决方案1】:

    您可以使用垂直的StackPanel 来将一系列TextBlock 元素一个接一个地放置:

    <DataTemplate>
       <StackPanel>
          <TextBlock Text="{Binding Module, StringFormat='Module: {0}'}"/>
          <TextBlock Text="{Binding FirstValue, StringFormat='Module: {0}'}"/>
          ...
       </StackPanel>
    </DataTemplate>
    

    或者您可以在一个“TextBlock”中格式化所有内容:

    <DataTemplate>
       <TextBlock>
          <Run Text="Module: "/><Run Text="{Binding Module}"/><LineBreak/><Run Text="Conditions: "/><Run Text="{Binding FirstValue}"/><LineBreak/>
          ...
       </TextBlock>
    </DataTemplate>
    

    【讨论】:

    • 这与文本换行无关,我需要更改我的代码,使其每一行都有一个绑定的文本块
    • @Sandeep - 抱歉,误解了你的问题。查看更新的答案。
    • 非常感谢,出于某种原因,没想到会那么容易。
    猜你喜欢
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    相关资源
    最近更新 更多