2011-07-29 21 views
10

Tengo un TextBlock que tiene un ancho de 100. Cuando la longitud del texto es grande quiero mostrar los caracteres alojados en ese bloque de texto y un (.. .) además del texto para especificar al usuario que también hay más texto allí. Al hacer clic en ese botón (...), el texto completo se mostrará en una ventana emergente separada.Mostrar botón de puntos suspensivos (...) Cuando el texto supera el rango WPF

Así que quiero que se muestre cómo se mostrará el botón dinámico (...) siempre que la longitud del texto supere el tamaño del bloque de texto. Por favor responda

Respuesta

1

Creo que lo que quiere es configurar el TextTrimming property. Configurándolo en WordElilipsis o CharacterEllipsis debería proporcionarle lo que necesita.

10

Esto no es exactamente lo que quiere, pero es una idea similar y simplemente utiliza el material horneado en:

<TextBlock MaxWidth="200" 
      Text="{Binding YourLongText}" 
      TextTrimming="WordEllipsis" 
      ToolTip="{Binding YourLongText}" /> 

lo que tiene un TextBlock con una anchura máxima, y ​​cuando el texto se puede' t fit muestra una elipsis ("..."). Al pasar el TextBlock con el mouse, se mostrará el texto completo en la información sobre herramientas.

+0

Gracias Matt por su respuesta. Pero quiero mostrar un botón automáticamente cuando la longitud de texto excede. En TextTrimming ... aparece, pero quiero que aparezca un botón con contenido ... –

2

simplemente experimentar el mismo requisito para añadir puntos suspensivos en el botón de modo de agregar la solución aquí

<Style x:Key="editButton" TargetType="{x:Type Button}"> 
      <Setter Property="Background" Value="Transparent" />       
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Button}"> 
         <Border Background="{TemplateBinding Background}"> 
          <ContentPresenter HorizontalAlignment="Left" VerticalAlignment="Center" > 
           <ContentPresenter.Resources> 
            <Style TargetType="TextBlock"> 
             <Setter Property="TextTrimming" Value="CharacterEllipsis"></Setter> 
            </Style> 
           </ContentPresenter.Resources> 
          </ContentPresenter> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background" Value="Transparent"/>      
       </Trigger> 
      </Style.Triggers> 
     </Style> 

Aviso los recursos en presentador de contenido.

+0

Para otros como yo: use ContentPresenter no ContentControl. – Vimes

Cuestiones relacionadas