shf301
shf301

Reputation: 31404

WPF TextBlock Overflow Text to the Left

As background I have a very long ID that too long to display in the given area of the TextBlock. The interesting portion of the ID is the end, that is the rightmost portion.

What I would like to do is have the TextBlock, rather than the text overflowing right and cutting off the rightmost portion, overflow left and cutoff the leftmost portion.

That is given the ID 123456 and a TextBlock with enough space to hold four characters, to get the TextBlock to display 3456 rather than 1234 as it does by default.

I could manually trim my ID for display, but given a variable spaced font that's not ideal. So is there someway to get WPF do change the overflow direction?

Upvotes: 6

Views: 4160

Answers (4)

Curtis
Curtis

Reputation: 5892

In order to show the entire text when the user hovers over the TextBox, simply bind the ToolTip to the Text property of the TextBox:

ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=Text}"

Upvotes: 2

Robert Rossney
Robert Rossney

Reputation: 96890

Is this the effect you're trying to get? It sounds like it:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <StackPanel Width="200">  
      <TextBlock Background="Honeydew" HorizontalAlignment="Right">
        The quick brown fox jumped over the lazy dog's back
      </TextBlock>
    </StackPanel>
</Page>

Upvotes: 5

hemp
hemp

Reputation: 5683

If you would also like to show the full text when a user hovers their mouse over the clipped TextBlock, it's a bit tricky, but there is a technique.

Upvotes: 2

Bermo
Bermo

Reputation: 4931

You simply need to set the following attribute FlowDirection="RightToLeft" in the XAML for the TextBox

Upvotes: 5

Related Questions