WPF:有没有一种方法,当使用Oblique FontStyle时如何避免TextBox文本剪切?

时间:2019-04-04 12:10:36

标签: c# wpf xaml textbox

TextBox 倾斜文本结合使用时,我有点麻烦。

我看了一个similar SO question,其中使用的控件实际上是一个 TextBlock ,并且增加了Height(如建议的那样)既不能解决TextBox的问题,也不能适合因为我需要根据TextBox内文本的Height隐式设置Height,所以需要我的方案。

除此之外,我找不到其他相关问题。

我有以下XAML代码:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">

    <TextBox
        HorizontalAlignment="Left"
        VerticalAlignment="Top"
        FontStyle="Normal"
        FontSize="50"
        Text="Another text">
    </TextBox>
</Window>

一切正常,直到我将FontStyle更改为Oblique(单击下面的链接以查看图片):

FontStyle="Normal"

FontStyle="Oblique"

我发现问题可能是由TextBox内部的 TextBoxView 引起的,该文本框的Width以一种非常奇怪的方式计算。字母的一部分似乎超出了其“选择范围”(当您查看所选文本 Snoop WPF元素突出显示时,我相信您会知道我的意思。

Selected text

Snoop WPF element highlight

事实证明,在Snoop WPF中调整TextBoxView Width可解决此问题。但是,我无法在XAML中实现相同的功能。

我可能可以通过为TextBox创建自定义模板来解决此问题,但是对于我本来希望可以正常工作的某些事情来说,这肯定显得有些多余,并且工作量很大。

我错过了什么吗,还是真的很难以正确的方式工作?

PS:我确实需要文本是可以选择的,因此使用TextBlock而不是TextBox是不可能的。

0 个答案:

没有答案