TextTrimming в ContentPresenter в приложениях магазина Windows

Я отредактировал стиль для ListBoxItem в приложении Windows Store. Когда содержимое элемента длинное, я хочу обрезать его, как в текстовом блоке у нас есть свойство 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>

но не работает для меня, любая помощь оценит.

2 ответа

Решение

Во-первых, установите свойство ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" в XAML

Затем, используя ваш первый пример XAML, удалите ContentPresenter обертывание TextBlock (вам не нужно в этом сценарии) и заменить на <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>
Другие вопросы по тегам