c# - WPF:ContentPresenter 上的 TextTrimming

标签 c# .net wpf contentpresenter texttrimming

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

我有将 TextTrimming 设置为 CharacterEllipsis 的 TextBlock 和 AccessText 的隐式样式,但它没有被 ContentPresenter 拾取。我可以将 ContentPresenter 更改为 AccessText 或 TextBlock 并将其设置在那里,但模板仅处理文本内容。

有什么建议吗?

谢谢!

最佳答案

如果元素是在控件的模板中定义的,则不会应用从 UIElement 而不是 Control 派生的元素的隐式样式除非隐式样式是在应用程序资源中定义的。这同样适用于 ContentPresenter 使用的 TextBlock。

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

<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>

如果您采用完全相同的样式并将其移动到应用程序的资源中,那么两者都将是红色的:

<Application.Resources>
    <Style TargetType="TextBlock">
        <Setter Property="Foreground" Value="Red" />
    </Style>
</Application.Resources>

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

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

关于c# - WPF:ContentPresenter 上的 TextTrimming,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5810919/

相关文章:

.net - 具有不同程序集版本的二进制反序列化

.net - ASP.Net 时间本地化

c# - 使用 MVVM 模式从 View 模型到 WPF 中的 View 的条件绑定(bind)

c# - TabControl 中所有 TabItem 的内容相同

c# - 为什么在使用 Guid.Parse() 方法时抛出异常?

c# - 子查询中的 LINQ orderby

c# - 更改日期时间格式

c# - 在 HTML 或 JavaScript 中查找特定字符串

c# - 使用 SimpleInjector 为实现泛型类型的类获取单例实例,而不是实际返回单例

时间:2019-03-17 标签:c#WPFProgressBarUpdate