有没有一种简单的方法可以让TextTrimming与ContentPresenter一起使用?
我有TextTrilocking设置为CharacterEllipsis的TextBlock和AccessText的隐式样式,但是ContentPresenter并未使用它。我可以将ContentPresenter更改为AccessText或TextBlock并在此处进行设置,但是模板仅处理文本内容。
有什么建议么?
谢谢!
最佳答案
如果在控件的模板中定义了元素,则不应用从UIElement而不是Control派生的元素的隐式样式,除非在应用程序资源中定义了隐式样式。 ContentPresenter使用的TextBlocks也是如此。
例如,在以下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>
因此,您可以将隐式样式移动到应用程序资源,通常这不是一个好主意。或者,您可以根据自己的特定情况自定义显示。这可以包括添加隐式DataTemplate或自定义控件的模板。
如果您可以提供更多信息,那么将更容易知道哪种方法是最好的。