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 示例删除包装 TextBlock
的 ContentPresenter
(在这种情况下您不需要它)并替换为 <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>
我已经在 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 示例删除包装 TextBlock
的 ContentPresenter
(在这种情况下您不需要它)并替换为 <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>