WPF: есть ли способ избежать обрезки текста TextBox при использовании Oblique FontStyle? - PullRequest
0 голосов
/ 04 апреля 2019

У меня возникли некоторые проблемы при использовании TextBox в сочетании с наклонным текстом.

Я посмотрел на аналогичный вопрос SO , где используемый элемент управления на самом деле TextBlock , и увеличение Height (как предложено) не решает проблему для TextBox и не подходит потребности моего сценария, так как мне нужно, чтобы Height был установлен неявно на основе Height текста внутри TextBox.

Кроме того, я не смог найти никаких других связанных вопросов.

У меня есть следующий код 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"

Я обнаружил, что проблема, вероятно, вызвана TextBoxView внутри TextBox, чье значение Width вычислено довольно странным образом. Кажется, что часть буквы выходит за пределы «границ выделения» (когда вы посмотрите на выделенный текст и выделите элемент Snoop WPF Я уверен, что вы будете знать, что Я имею в виду).

Выбранный текст

Подсветка элемента Snoop WPF

Как оказалось, настройка TextBoxView Width в Snoop WPF решает проблему. Однако я не могу добиться того же в XAML.

Вероятно, я мог бы обойти это, создав собственный шаблон для TextBox, но это, конечно, кажется излишним и огромным количеством работы для чего-то, что я ожидал бы с самого начала работать должным образом.

Я что-то пропустил или действительно так сложно заставить работать правильно?

PS: мне действительно нужно, чтобы текст можно было выбирать, поэтому использование TextBlock вместо TextBox исключено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...