2010-01-22 21 views
6

Soy un novato con wpf, lo que quiero mostrar el texto en una línea en wpf textblock. por ejemplo .:Cómo mostrar el texto en una línea en wpf textblock

<TextBlock 
    Text ="asfasfasfa 
    asdasdasd" 
</TextBlock> 

TextBlock mostrarlo en su defecto dos líneas,

pero yo quiero en una sola línea como ésta "asfafaf asafsf". Me refiero a mostrar todo el texto en una línea, incluso si hay más de una línea en el texto
¿qué debo hacer?

Respuesta

6

lugar de esto:

  <TextBlock Text="Hello 
       How Are 
       You??"/> 

Utilice esta:

  <TextBlock> 
       Hello 
       How Are 
       You?? 
      </TextBlock> 

o esto:

  <TextBlock> 
       <Run>Hello</Run> 
       <Run>How Are</Run> 
       <Run>You??</Run> 
      </TextBlock> 

o establecer la propiedad de texto en código detrás de la siguiente manera:

(In XAML)

  <TextBlock x:Name="MyTextBlock"/> 

(In code - c#)

  MyTextBlock.Text = "Hello How Are You??" 

de código subyacente enfoque tiene la ventaja de que puede dar formato al texto antes de definirlo. Ejemplo: Si el texto se recupera de un archivo y desea eliminar cualquier carácter de nueva línea de retorno de carro que puede hacer de esta manera:

string textFromFile = System.IO.File.ReadAllText(@"Path\To\Text\File.txt"); 
MyTextBlock.Text = textFromFile.Replace("\n","").Replace("\r",""); 
+0

en realidad el texto de la pantalla se encuentra en un archivo, por lo que no puede hacerlo así, ¿hay otra manera? Muchas gracias. – baorui

+0

Por favor revise mi respuesta editada para esto. – mg007

14

utilizar un convertidor:

<TextBlock Text={Binding Path=TextPropertyName, 
Converter={StaticResource SingleLineTextConverter}} 

SingleLineTextConverter Cs:

public class SingleLineTextConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     string s = (string)value; 
     s = s.Replace(Environment.NewLine, " "); 
     return s; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+1

¿Qué tal si le dieras el código fuente del convertidor como ejemplo aquí? No tengo VS práctico así que no puedo pegarlo. El código fuente haría de esto la respuesta definitiva. – Thorsten79

+0

La buena manera de Thaht, gracias ~~ – baorui

+1

Me gustó la idea, gracias. Pero tuve que hacer una comprobación nula al comienzo del método Convert(), de lo contrario obtuve una excepción de referencia nula. – nightcoder