有没有简单的方法让 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/