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>