在UWP的TextBox中加下划线文字字体?

时间:2018-08-31 17:27:00

标签: uwp

我正在将现有的Windows控件转换为UWP。我看不到在UWP的TextBox控件中具有下划线字体样式的方法。

我缺少基本的东西吗?还是我应该忘记TextBox并使用RichEditBox(对我而言,这太过大了)?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试将边框添加到默认样式中,但是我认为这会很困难,您现在可以使用RichEditBox,同时通过创建新的样式资源来覆盖默认样式,我知道RichEditBox不是设计用于接受来自用户的输入,但是我认为它对性能https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/text-controls

不会有太大影响

答案 1 :(得分:0)

  

我缺少基本的东西吗?还是我应该忘记TextBox并使用RichEditBox(对我而言,这太过大了)?

您可以使用Windows.UI.Text.Core名称空间中的核心文本API来创建自己的自定义输入控件。

您只需要使用一些通用的UWP控件(例如,文本块,堆栈面板,边框等)来制作一个输入控件(您可以将其称为自己的自定义文本框),当您在其中输入文字时,该控件就会带有下划线。

这里是UWP官方Custom Edit Control sample。我只是在'CustomEditControl.xaml'中为TextDecorations指定了TextBlock属性值,然后就实现了目标。

<StackPanel x:Name="BorderPanel" BorderThickness="4" Background="White">
        <StackPanel x:Name="ContentPanel" Orientation="Horizontal" HorizontalAlignment="Left">
            <TextBlock x:Name="BeforeSelectionText" Foreground="Black" TextDecorations="Underline"/>
            <TextBlock x:Name="CaretText" Text="&#xe12b;" Foreground="Blue" FontFamily="Segoe UI Symbol"/>
            <Border Background="Blue">
                <TextBlock x:Name="SelectionText" Foreground="White"/>
            </Border>
            <TextBlock x:Name="AfterSelectionText" Foreground="Black"/>
        </StackPanel>
</StackPanel>

enter image description here