Newline in a WPF-label?

前端 未结 5 2012
梦毁少年i
梦毁少年i 2020-12-13 16:50

How can I add a newline in the text of a label in WPF such as the following?


相关标签:
5条回答
  • 2020-12-13 17:13
    <Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>
    

    You need to use TextBlock because TextBlock accepts as children a collection of Inline objects. So you are giving the TextBlock element three Inline items: Run Text="Lorem", LineBreak, and Run Text="ipsum".

    You can't do the following:

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

    because a label accepts one content child element.

    Also, not sure exactly what your use case is but notice I placed a TextBlock inside your Label element. Is it repetitive? Not really, depending on your need. Here's a good article on the differences between the two elements: Difference between Label and TextBlock

    0 讨论(0)
  • 2020-12-13 17:19

    in WPF you can use the value "&#10;" or "&#xA;"

    For example:

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

    ("10" is the ASCII number for newline)

    or

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

    ("A" is the ASCII number for newline in hex)

    Example, with a border arround label to show boundry

    0 讨论(0)
  • 2020-12-13 17:21

    An example of how to add a ToolTip with multiple lines to a control, such as a button. The tooltip is width limited so it will wrap if a sentence is too wide.

    <!-- 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>
    

    Tested on VS2019 + .NET 4.6.1 + WPF.

    0 讨论(0)
  • When doing this in the ViewModel or Model, I have found that using Environment.NewLine has the most consistent outcome, including localization. It should work directly in the View as well, but I haven't tested that.

    Example:

    In the View

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

    In the ViewModel:

    SomeStringObject.ParameterName = "First line" + Environment.NewLine + "Second line";
    
    0 讨论(0)
  • 2020-12-13 17:32
    <Label xml:space="preserve">text content
    another line</Label>
    

    seems to work too

    0 讨论(0)
提交回复
热议问题