1

私はこの問題に数回遭遇しましたが、まだ簡単な解決策を見つけていません。幅が指定されていない別の要素内にTextBlock(with ) が埋め込まれている場合、は、最初にテキストをラップするのではなく、親が許可する限り大きく展開します。たとえば、私は現在、に取り組んでいます。現在、テンプレートが の幅よりも長いテキストを処理する方法は次のとおりです。TextWrapping="Wrap"TextBlockTextBlock ValidationTemplateTextBox

現在の検証テンプレート

これは明らかに最適ではありません。これが私がそれをどのように表示したいかです:

必要な検証テンプレート

ControlTemplate最初のレイアウトを生成する のXAMLは次のとおりです。

<ControlTemplate>
  <DockPanel LastChildFill="True">
    <Border DockPanel.Dock="Top" BorderBrush="Red" BorderThickness="1">
      <DockPanel>
        <AdornedElementPlaceholder x:Name="TargetTextBox" />
        <Grid x:Name="WarningBoxContainer" Background="Red" Width="{Binding ElementName=TargetTextBox, Path=ActualHeight}" Height="{Binding RelativeSource={RelativeSource Self}, Path=Width}">
            <Path Margin="5" Stretch="Fill" Fill="#FFFFFFFF" Data="F1 M 26.9166,22.1667L 37.9999,33.25L 49.0832,22.1668L 53.8332,26.9168L 42.7499,38L 53.8332,49.0834L 49.0833,53.8334L 37.9999,42.75L 26.9166,53.8334L 22.1666,49.0833L 33.25,38L 22.1667,26.9167L 26.9166,22.1667 Z "/>
        </Grid>
      </DockPanel>
    </Border>
    <Border DockPanel.Dock="Top" Margin="0,2,0,0">
      <TextBlock Text="Something very terrible has happened" TextWrapping="Wrap"/>
    </Border>
  </DockPanel>
</ControlTemplate>

TextBlock拡張する前にラップを作る方法を知っている人はいますか?

4

1 に答える 1