【问题标题】:TextBlock fit text in ListViewTextBlock 适合 ListView 中的文本
【发布时间】:2017-03-13 21:41:45
【问题描述】:

如何设置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 宽度,则文本的其余部分不明显。除了对文本进行硬编码之外,有没有一种简单的方法来适应它?

【问题讨论】:

  • 你能显示屏幕截图吗?
  • 尝试将TextWrapping="Wrap"添加到TextBlock
  • TextWrapping 在 UWP 上的工作方式并不完全相同

标签: c# uwp textblock


【解决方案1】:

@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,这意味着它将使用最小宽度。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这是 UWP 不是 WPF
    猜你喜欢
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2016-09-24
    • 1970-01-01
    • 2014-01-01
    • 2011-06-11
    • 2016-02-12
    相关资源
    最近更新 更多