10

TextTrimming を ContentPresenter で動作させる簡単な方法はありますか?

TextTrimming が CharacterEllipsis に設定されている TextBlock と AccessText の暗黙のスタイルがありますが、ContentPresenter によって取得されません。ContentPresenter を AccessText または TextBlock に変更してそこに設定することはできますが、テンプレートはテキスト コンテンツしか処理しません。

助言がありますか?

ありがとう!

4

2 に答える 2

13

UIElementから派生しているが、コントロールではない要素の暗黙的なスタイルは、要素がコントロールのテンプレートで定義されている場合、アプリケーションのリソースで暗黙的なスタイルが定義されていない限り、適用されません。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>

したがって、暗黙のスタイルをアプリケーションリソースに移動することもできますが、これは一般的にはお勧めできません。または、特定のシナリオに合わせて表示をカスタマイズできます。これには、暗黙的なDataTemplateの追加、またはコントロールのテンプレートのカスタマイズが含まれます。

より多くの情報を提供できれば、どちらが最善のアプローチであるかを知るのが簡単になります。

于 2011-04-28T00:18:13.277 に答える