TextBlock适合ListView中的文本

TextBlock fit text in ListView

如何设置 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宽度,则文本的其余部分显然不可​​见。除了对文本进行硬编码之外,是否有一种简单的方法使其适合它?

不要为父元素使用堆栈面板?并将 Horizo​​ntalAlignment 添加到 Textblock。 否则定义 itemcontainer 样式使用 Horizo​​ntalContentAlignment 到 Stretch 你可以很容易地找到一些例子。

@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,并且您没有设置默认为 Left 的 ItemContainerStyle,这意味着它将使用最小宽度。