TextBlock在ListView中适合文本

时间:2017-03-12 23:27:04

标签: c# uwp textblock

如何设置TextBlock的长度以使其适合ListViewItem? 这是我的xaml:

<ListView x:Name="flyList" BorderThickness="0" ItemsSource="{Binding}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Border BorderThickness="0,0,0,1" BorderBrush="#FF7C7C7C">
                    <TextBlock Text="{Binding}" Tapped="TextBlock_Tapped" SelectionHighlightColor="#FF8F8F8F">
                        <ToolTipService.ToolTip>
                            <ToolTip Name="tip1" Content="Click to copy signal to clipboard."/>
                        </ToolTipService.ToolTip>
                    </TextBlock>
                </Border>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

如果文本比ListViewItem宽度长,则文本的其余部分显然不可​​见。除了对文本进行硬编码之外,还有一种简单的方法可以使其适合吗?

2 个答案:

答案 0 :(得分:4)

@CETINKAYA Ayta Ozden有一个很好的解决方法,但我想我应该给你一个代码来解释。

第一件事就是使用代码设置ItemContainerStyle:

      <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment"
                            Value="Stretch"></Setter>
                </Style>
            </ListView.ItemContainerStyle>

将StackPanel替换为Grid。

TextWrapping="Wrap"添加到TextBlock。 @WPInfo你的方式。

如果你设置了最小宽度的StackPanel,如果没有设置ItemContainerStyle,它的默认值是Left,这意味着它将使用最小宽度。

答案 1 :(得分:2)

不要将stackpanel用于父元素?并将Horizo​​ntalAlignment添加到Textblock。 另外定义itemcontainer样式使用Horizo​​ntalContentAlignment to Stretch,您可以轻松找到一些示例。