windows 商店应用中 ContentPresenter 中的 TextTrimming

TextTrimming in ContentPresenter in windows store apps

我已经在 windows 商店应用程序中编辑了 ListBoxItem 的样式。 当项目的内容很长时,我想 trim 它,就像在文本块中我们有 属性 TextTrimming = "CharacterEllipsis"。 我试过两种方法。

<ContentPresenter x:Name="ContentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
    <TextBlock TextTrimming="WordEllipsis" Text="{TemplateBinding Content}"        Margin="{TemplateBinding Padding}"/>
</ContentPresenter>

<ContentPresenter x:Name="ContentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
  <ContentPresenter.Resources>
    <Style TargetType="TextBlock">
      <Setter Property="TextTrimming" Value="CharacterEllipsis"/>
      <Setter Property="MaxWidth" Value="10"/>
      <Setter Property="Foreground" Value="Red"/>
    </Style>
  </ContentPresenter.Resources>
</ContentPresenter>

但不适合我,任何帮助将不胜感激。

首先,将您的 ListBox 属性 ScrollViewer.HorizontalScrollBarVisibility="Disabled" 设置为 XAML

然后使用您的第一个 XAML 示例删除包装 TextBlockContentPresenter(在这种情况下您不需要它)并替换为 <Grid>

通过编辑 ContentTemplate 完成,

<ContentPresenter x:Name="ContentPresenter" ContentTransitions="{TemplateBinding ContentTransitions}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
      <ContentPresenter.ContentTemplate>
        <DataTemplate>
         <TextBlock Text="{Binding ElementName=ContentPresenter, Path=Content}" TextTrimming="CharacterEllipsis"/>
        </DataTemplate>
       </ContentPresenter.ContentTemplate>
</ContentPresenter>