WPF button textwrap style WPF button textwrap style wpf wpf

WPF button textwrap style


To expand Eric's answer with an example:-

<Button Name="btnName" Width="50" Height="40">   <TextBlock Text="Some long text" TextWrapping="Wrap" TextAlignment="Center"/></Button>


I solved this problem by adding a TextBlock to the button, and using it to display the button text instead of the button's Content property. Be sure to set the TextBlock's height property to Auto, so that it grows in height to accommodate the number of lines of text as it wraps.


Your second version should work, and does for me, with the caveat that you need to change the TextBlock Text binding:

<!-- in Window.Resources --><Style x:Key="fie" TargetType="Button">  <Setter Property="Template">    <Setter.Value>      <ControlTemplate TargetType="{x:Type Button}">        <TextBlock Text="{TemplateBinding Content}" FontSize="20" TextWrapping="Wrap"/>      </ControlTemplate>    </Setter.Value>  </Setter></Style><!-- then --><Button Style="{StaticResource fie}">verylongcaptiongoeshereandwraps/Button>

Note this completely replaces the button style (i.e. you will need to create your own button chrome if you want it).

Regarding your second question, all writeable dependency properties can be set using a Setter. The reason you were unable to set TextWrapping on a Button via a style is that Button does not have a TextWrapping dependency property (or indeed any TextWrapping property). There are no "magic words," just the names of dependency properties.