Regarding how to handle spaces in XAML, MSDN provides a detailed description: http://msdn.microsoft.com/en-us/library/cc189036%28v=VS.95%29. aspx#whitespace
Extract the important points briefly:
Spaces, carriage returns, and tabs are all treated as spaces.
Continuous spaces will be merged into one space. The spaces immediately after
How to preserve spaces
Add the attribute xml:space="preserve" to the element
After setting this attribute, all spaces in the element will be retained, continuous spaces will not be merged, and the two ends will not be trimmed. Space.
One inconvenience of this method is that it will retain all spaces in the element, even if these spaces are generated by code formatting. This means that you cannot use shortcut keys such as ctrl+E, F to organize the code format. Once you accidentally organize it, it will be very troublesome to change it back.
Because XAML supports writing Unicode code directly, this string of code represents a non breaking space.
Complex text
For text with complex formats, it is recommended to use RichTextBox.
Because text elements are divided into block and inline, TextBlock only allows to contain inline, so it is more suitable to display a small amount of text.
If the format is more complex, be careful to use span. The difference between span and run is that span will not inherit the format of the parent element, which is equivalent to resetting the format and is not affected by the format of the parent element.
* Line break
Entering a carriage return in XAML will be treated as a space, and all line breaks must use
In addition, two Runs are adjacent. If they are arranged as follows:
<Run>ab</Run> <Run>cd</Run>
, it will be displayed as:
ab cd
, and a newline character will be automatically added between the two Runs.
If you want to remove the carriage return and display it as abcd, you should write it in one line:
<Run>ab</Run><Run>cd</Run>
* Tab
First of all, there is no tab in XAML, you can only use continuous spaces. replace.
It should be noted that when assigning a string to the Xaml attribute of RichTextBox, continuous spaces will be merged. Therefore, if you want to retain tabs (continuous spaces), you need to perform such a workaround:
private const string TAB = " "; private const string TAB_PLACEHOLDER = "===TAB==="; textBox1.Text = richTextBox1.Xaml; string xaml = richTextBox1.Xaml; xaml = xaml.Replace(TAB, TAB_PLACEHOLDER); richTextBox2.Xaml = xaml; foreach (Block block in richTextBox2.Blocks) { foreach (Inline inline in ((Paragraph)block).Inlines) { ((Run)inline).Text = ((Run)inline).Text.Replace(TAB_PLACEHOLDER, TAB); } }
First use a placeholder to replace the four spaces, so that the spaces will not be merged when assigning values to the xaml attribute of richTextBox.
Then replace this placeholder. When the value is assigned and replaced, it will not be merged.
================================================ ===
XAML is bound by XML rules. For example, XML has special meaning for several special characters, such as &,<,>. If you try to use these values to set the content of an element, you may get an error because the XAML parser assumes you are trying to do something like create nested elements. You can use character entities, such as < with <, > with >, & with &, "with". Special characters are not an obstacle for you to run XAML. The other is space processing. Spaces, TAB, and Enter keys before and after a string, as well as in the string, will be ignored, leaving only one space. You can use XML:space="preserve" to preserve any spaces, TAB, and Enter keys. Note that these rules only work for XAML, if you set the content in code, any whitespace will be preserved.
Special characters and spaces
The following characters are defined as whitespace characters in [XML]:
Space ()
Tab ()
Enter (
)
Line break ( )
##
The above is the detailed content of XML special characters and spaces, newlines, escape character codes in detail. For more information, please follow other related articles on the PHP Chinese website!