首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF: ContentPresenter上的TextTrimming

WPF: ContentPresenter上的TextTrimming
EN

Stack Overflow用户
提问于 2011-04-28 05:37:20
回答 2查看 4.6K关注 0票数 10

有没有一种简单的方法可以让TextTrimming与ContentPresenter一起工作?

我有用于TextBlock和AccessText的隐式样式,它们的TextTrimming设置为CharacterEllipsis,但ContentPresenter不接受它。我可以将ContentPresenter更改为AccessText或TextBlock并将其设置在那里,但随后模板只处理文本内容。

有什么建议吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-28 08:18:13

如果元素是在控件的模板中定义的,则不会应用从UIElement派生的元素的隐式样式,除非在应用程序资源中定义了隐式样式。ContentPresenter使用的TextBlocks也是如此。

例如,在下面的XAML中,最终用于呈现按钮内容的TextBlock将而不是获取隐式样式:

代码语言:javascript
复制
<Window.Resources>
    <Style TargetType="TextBlock">
        <Setter Property="Foreground" Value="Red" />
    </Style>
</Window.Resources>
<StackPanel>
    <Button Content="Will not be red" />
    <TextBlock Text="Will be red" />
</StackPanel>

如果您采用完全相同的样式并将其移动到应用程序的Resources,则这两个样式都将为红色:

代码语言:javascript
复制
<Application.Resources>
    <Style TargetType="TextBlock">
        <Setter Property="Foreground" Value="Red" />
    </Style>
</Application.Resources>

因此,您可以将您的隐式风格转移到应用程序资源,这通常不是一个好主意。或者,您可以根据您拥有的特定场景自定义显示。这可以包括添加隐式DataTemplate或自定义控件的模板。

如果你能提供更多的信息,那么就更容易知道哪种方法是最好的。

票数 13
EN

Stack Overflow用户

发布于 2018-12-27 06:32:16

多亏了this Gist by James Nugent:"WPF可以在按钮内容上放置字符省略号,而不会用TextBlock替换ContentPresenter,从而失去对访问键的支持能力。“

这对我很有效:

代码语言:javascript
复制
<ContentPresenter.Resources>
    <Style TargetType="TextBlock">
        <Setter Property="TextTrimming" Value="CharacterEllipsis"></Setter>    
    </Style>
</ContentPresenter.Resources>
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5810919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档