Dòng mới trong nhãn WPF?


83

Làm cách nào để thêm dòng mới trong văn bản của nhãn trong WPF, chẳng hạn như sau?

<Label>Lorem 
  ipsum</Label>

Câu trả lời:


116
<Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>

Bạn cần sử dụng TextBlock vì TextBlock chấp nhận là con một tập hợp các đối tượng Nội tuyến. Vì vậy, bạn đang cung cấp cho phần tử TextBlock ba mục Nội tuyến: Run Text = "Lorem", LineBreak và Run Text = "ipsum".

Bạn không thể làm như sau:

<Label>Lorem<LineBreak/>ipsum</Label>`

vì nhãn chấp nhận một phần tử con nội dung.

Ngoài ra, không chắc chắn chính xác trường hợp sử dụng của bạn là gì nhưng hãy lưu ý rằng tôi đã đặt một TextBlock bên trong phần tử Nhãn của bạn. Nó có lặp đi lặp lại không? Không hẳn, tùy thuộc vào nhu cầu của bạn. Đây là một bài viết hay về sự khác biệt giữa hai yếu tố: Sự khác biệt giữa Label và TextBlock


1
Khi tôi thử câu trả lời ở trên, tôi đã gặp lỗi vì có thẻ ở giữa nội dung của mình. Thay vào đó, tôi sử dụng cái này: <TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>
Tác nhân gây bệnh

3
Điều này hoạt động tốt nhưng không hữu ích khi sử dụng bản địa hóa. Trong trường hợp đó sử dụngLorem&#x0a;Ipsum
stijn

103

trong WPF, bạn có thể sử dụng giá trị "&#10;"hoặc"&#xA;"

Ví dụ:

<Label Content="Lorem&#10;ipsum" />

("10" là số ASCII cho dòng mới)

hoặc là

<Label Content="Lorem&#xA;ipsum" />

("A" là số ASCII cho dòng mới trong hex)

Ví dụ, với nhãn bao quanh đường viền để hiển thị giới hạn


3
Đồng ý đây phải là câu trả lời được chấp nhận. Nó thanh lịch hơn và đơn giản hơn để sử dụng.
Tyler C

10

Khi thực hiện việc này trong ViewModel hoặc Model, tôi nhận thấy rằng việc sử dụng Environment.NewLine có kết quả nhất quán nhất, bao gồm cả bản địa hóa. Nó cũng sẽ hoạt động trực tiếp trong Chế độ xem, nhưng tôi chưa thử nghiệm điều đó.

Thí dụ:

Theo quan điểm

<Label Content="{Binding SomeStringObject.ParameterName}" />

Trong ViewModel:

SomeStringObject.ParameterName = "First line" + Environment.NewLine + "Second line";

2

Ví dụ về cách thêm ToolTip có nhiều dòng vào một điều khiển, chẳng hạn như một nút. Chú giải công cụ bị giới hạn về chiều rộng, vì vậy nó sẽ bị quấn nếu một câu quá rộng.

<!-- Button would need some properties to make it clickable.-->
<Button>
   <Button.ToolTip>
      <TextBlock Text="Line 1&#x0a;Line 2" MaxWidth="300" TextWrapping="Wrap"/>
    </Button.ToolTip>
</Button>

Đã thử nghiệm trên VS2019 + .NET 4.6.1 + WPF.


1
<Label xml:space="preserve">text content
another line</Label>

dường như cũng hoạt động

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.