有沒有簡單的方法讓TextTrimming能夠與ContentPresenter一起使用?WPF:ContentPresenter上的TextTrimming
我有TextBlock和AccessText的TextTrimming設置爲CharacterEllipsis的隱式樣式,但它沒有被ContentPresenter拾取。我可以將ContentPresenter更改爲AccessText或TextBlock並將其設置在那裏,但該模板僅處理文本內容。
有什麼建議嗎?
謝謝!
有沒有簡單的方法讓TextTrimming能夠與ContentPresenter一起使用?WPF:ContentPresenter上的TextTrimming
我有TextBlock和AccessText的TextTrimming設置爲CharacterEllipsis的隱式樣式,但它沒有被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或自定義控件的模板。
如果您可以提供更多信息,那麼知道哪種方法是最好的方法會更容易。
即使超鏈接是紅色的,*你做了什麼*! – 2011-04-28 00:28:30
@ H.B。 - 我把這個小鎮畫成了紅色! – CodeNaked 2011-04-28 00:33:52
感謝您的解釋!在別處發佈的另一個解決方案在ControlTemplate中的ContentPresenter.Resources中定義了一種樣式。我試過這種方法,它的工作原理。在我們的案例中,將隱式樣式移動到Application.Resources將會像所有文本塊被修剪一樣工作。添加一個類似於我上面所做的隱式數據模板嗎?如何定義一個數據模板以便支持任意內容? – dex3703 2011-04-28 02:42:40