2010-01-22 8 views
6

Tôi là một newbie với wpf, những gì tôi muốn hiển thị văn bản trong một dòng trong văn bản wpf. Eg .:Làm thế nào để hiển thị văn bản trong một dòng trong văn bản wpf

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

TextBlock hiển thị nó trong hai dòng mặc định,

nhưng tôi muốn nó chỉ trong một dòng như thế này "asafsf asfafaf". Tôi có nghĩa là hiển thị tất cả văn bản trong một dòng ngay cả khi có nhiều dòng trong văn bản
tôi nên làm gì?

Trả lời

6

Thay vì điều này:

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

Sử dụng này:

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

hay này:

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

hoặc thiết lập thuộc tính Text trong mã đằng sau như thế này:

(In XAML)

  <TextBlock x:Name="MyTextBlock"/> 

(In code - c#)

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

Mã-đằng sau phương pháp đều có một lợi thế mà bạn có thể định dạng văn bản của bạn trước khi cài đặt nó. Ví dụ: Nếu văn bản được lấy từ một tập tin và bạn muốn loại bỏ bất kỳ nhân vật mới dòng vận chuyển-trở lại, bạn có thể làm theo cách này:

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

Thực ra văn bản cần hiển thị nằm trong tệp, vì vậy tôi không thể làm như vậy, có cách nào khác không? Cảm ơn nhiều. – baorui

+0

Vui lòng kiểm tra câu trả lời đã chỉnh sửa của tôi cho mục này. – mg007

14

Sử dụng Chuyển đổi:

<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

Làm thế nào về nếu bạn đã cung cấp mã nguồn chuyển đổi làm ví dụ ở đây? Tôi không có VS tiện dụng vì vậy tôi không thể dán nó vào. Mã nguồn sẽ làm cho câu trả lời dứt khoát này. – Thorsten79

+0

Cách tốt của Thaht, cảm ơn bạn ~~ – baorui

+1

Đã thích ý tưởng, cảm ơn. Nhưng tôi đã phải kiểm tra null trong đầu của phương thức Convert(), nếu không tôi có một ngoại lệ tham chiếu null. – nightcoder