开篇之前:
如果对Windows 8.1中的文本控件新增属性感兴趣,推荐王磊老师的这方面的博客
我这边写的其实跟王磊老师的基本上是一样的,只是有一些不同而已
a.MaxLines属于文本显示类控件的属性
MaxLines规定了只能有6行,所以最后一个"喜羊羊"就没有出现
同时注意TextBlock.Inlines的写法和以下Run,Span,Bold等....标签的使用
b.PreventKeyboardDisplayOnProgrammaticFocus属于文本输入类控件的属性
PreventKeyboardDisplayOnProgrammaticFocus 属性:当通过编程方式在文本框上设置焦点时,是否不显示屏幕触
摸键盘
c.文本显示类控件和文本输入类控件都有SelectionHighlightColor属性
文本显示类控件有IsTextSelectionEnabled属性,文本输入类控件则没有
IsTextSelectionEnabled设置文本是否能被选中
SelectionHighlightColor设置选中部分背景呈现什么颜色,注意不是选中的文本颜色
注意TextBox不存在IsTextSelectionEnabled属性
d.控件 ComboBox, PasswordBox, RichEditBox, SearchBox, TextBox有PlaceholderText属性
PlaceholderText属性是文本输入类控件的属性
e.TextTrimming是文本显示类控件的属性
注意下面关于TextTrimming代码中的第三个和第四个的区别即可,第三个最小单位是单词,第四个最小单位是字符
f.文本显示类控件和文本输入类控件都具备TextTrapping属性
g.控件 ComboBox, Slider, DatePicker, TimePicker, TextBox, PasswordBox, RichEditBox增加了 Header 属性和
HeaderTemplate 属性
Header不能命中测试,只能写文本
HeaderTemplate能命中测试(就像下面的button,可以有点击事件一样),并且在其DataTemplate中可以写任何xaml
<Page
x:Class="TestUnion.TextControllerTest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TestUnion"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<Hub Header="TextControllerTest" DefaultSectionIndex="0">
<HubSection Header="MaxLines">
<!--MaxLines属于文本显示类控件的属性-->
<!--MaxLines规定了只能有6行,所以最后一个"喜羊羊"就没有出现-->
<!--同时注意TextBlock.Inlines的写法和以下Run,Span,Bold等标签的使用-->
<DataTemplate>
<TextBlock FontSize="30" MaxLines="6">
<TextBlock.Inlines>
<Run>汤姆</Run>
<LineBreak/>
<Span>杰瑞</Span>
<LineBreak/>
<Hyperlink>唐老鸭</Hyperlink>
<LineBreak/>
<Bold>米老鼠</Bold>
<LineBreak/>
<Underline>维尼</Underline>
<LineBreak/>
<Italic>跳跳虎</Italic>
<LineBreak/>
<Bold>喜羊羊</Bold>
</TextBlock.Inlines>
</TextBlock>
</DataTemplate>
</HubSection>
<HubSection Header="PreventKeyboardDisplayOnProgrammaticFocus">
<!--PreventKeyboardDisplayOnProgrammaticFocus属于文本输入类控件的属性-->
<!-- PreventKeyboardDisplayOnProgrammaticFocus 属性:当通过编程方式在文本框上设置焦点时,是否不显示屏幕触摸键盘-->
<DataTemplate>
<TextBox PreventKeyboardDisplayOnProgrammaticFocus="True"/>
</DataTemplate>
</HubSection>
<HubSection Header="IsTextSelectionEnabled SelectionHighlightColor">
<!--文本显示类控件和文本输入类控件都有SelectionHighlightColor属性-->
<!--文本显示类控件有IsTextSelectionEnabled属性,文本输入类控件则没有-->
<!--IsTextSelectionEnabled设置文本是否能被选中-->
<!--SelectionHighlightColor设置选中部分背景呈现什么颜色,注意不是选中的文本颜色-->
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" FontSize="30" Text="文本能被选中" IsTextSelectionEnabled="True">
<TextBlock.SelectionHighlightColor>
<SolidColorBrush Color="Green"/>
</TextBlock.SelectionHighlightColor>
</TextBlock>
<TextBlock Grid.Row="1" FontSize="30" Text="文本不能被选中" IsTextSelectionEnabled="False">
<TextBlock.SelectionHighlightColor>
<SolidColorBrush Color="Green"/>
</TextBlock.SelectionHighlightColor>
</TextBlock>
<!--TextBox不存在IsTextSelectionEnabled属性-->
<TextBox Grid.Row="2" Text="文本能被选中(默认能)">
<TextBox.SelectionHighlightColor>
<SolidColorBrush Color="Red"/>
</TextBox.SelectionHighlightColor>
</TextBox>
</Grid>
</DataTemplate>
</HubSection>
<HubSection Header="PlaceholderText--预文本显示">
<!--控件 ComboBox, PasswordBox, RichEditBox, SearchBox, TextBox有PlaceholderText属性-->
<!--PlaceholderText属性是文本输入类控件的属性-->
<DataTemplate>
<TextBox PlaceholderText="预填充文本" Paste="TextBox_Paste" />
</DataTemplate>
</HubSection>
<HubSection Header="TextTrimming--文本修整">
<!--TextTrimming是文本显示类控件的属性-->
<!--这边注意第三个和第四个的区别即可,第三个最小单位是单词,第四个最小单位是字符-->
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="chang zeyamei xin yuanjieyi" FontSize="30" Width="200" TextTrimming="None" />
<TextBlock Text="chang zeyamei xin yuanjieyi" FontSize="30" Width="200" TextTrimming="Clip"/>
<TextBlock Text="chang zeyamei xin yuanjieyi" FontSize="30" Width="200" TextTrimming="WordEllipsis"/>
<TextBlock Text="chang zeyamei xin yuanjieyi" FontSize="30" Width="200" TextTrimming="CharacterEllipsis"/>
</StackPanel>
</DataTemplate>
</HubSection>
<HubSection Header="TextTrapping--文本换行">
<!--文本显示类控件和文本输入类控件都具备TextTrapping属性-->
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="song daocaicaizi" FontSize="24" Width="100" TextWrapping="NoWrap"/>
<TextBlock Text="song daocaicaizi" FontSize="24" Width="100" TextWrapping="Wrap"/>
<TextBlock Text="song daocaicaizi" FontSize="24" Width="100" TextWrapping="WrapWholeWords"/>
</StackPanel>
</DataTemplate>
</HubSection>
<HubSection>
<!--控件 ComboBox, Slider, DatePicker, TimePicker, TextBox, PasswordBox, RichEditBox
增加了 Header 属性和 HeaderTemplate 属性-->
<!--Header不能命中测试,只能写文本-->
<!--HeaderTemplate能命中测试(就像下面的button,可以有点击事件一样),并且在其DataTemplate中可以写任何xaml-->
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBox Header="标题" />
<TextBox>
<TextBox.HeaderTemplate>
<DataTemplate>
<Button Content="标题" Click="Button_Click" />
</DataTemplate>
</TextBox.HeaderTemplate>
</TextBox>
</StackPanel>
</DataTemplate>
</HubSection>
</Hub>
</Grid>
</Page>
运行截图:(这边挑选几张比较有特点并且结果很有对比性的截图)