WPF: полоса прокрутки текстового поля не имеет большого пальца - PullRequest
1 голос
/ 07 сентября 2010

Мое текстовое поле - единственный элемент управления в окне, которое является частью более крупного приложения.Текстовое поле содержит определенное количество текста, достаточно большое, чтобы показать вертикальную полосу прокрутки.Появляется полоса прокрутки, но без большого пальца:

alt text

Я все еще могу прокручивать содержимое либо колесом мыши, либо многократно нажимая кнопки со стрелками.Когда я создаю новый проект с тем же окном и текстовым полем, полоса прокрутки работает как надо.То же самое происходит с WrapPanel.У вас есть идеи, что может испортить мой существующий проект и вызвать эту проблему?В generic.xaml я нашел несколько стилей, переопределяющих настройки по умолчанию для полосы прокрутки и scrollviewer, но даже полная очистка generic.xaml не помогла.

Заранее спасибо!

EDIT: верно, код,Это только XAML (без кода поддержки c #).

<Window x:Class="TextBoxTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" MaxHeight="200" MaxWidth="200">
<TextBox x:Name="textbox" MaxLines="2"  MaxHeight="50" VerticalScrollBarVisibility="Auto" TextWrapping="WrapWithOverflow">
    Useless text..... asdasdasda ssssssssssssss sssssss ssssaokdoka sdojwoandowm nxaofwha398ua ozmca3u0a3j3   a80a9fu 03 u0sf u0s9jf4s 0cuj wuf0j w40 fcjw cujwfj9 c9 u49 wsuc j9w3
    3089w 9f8u4wfv 0sf ufw0u w0fuw0 fwu f0uw 09djcazp zopf h43 wofh FYHFWFH WOWY HWO H wohg fujg 4g fugj 4 g0 4
    4w fw4 f3f g555u45y 55 some more some moresome more some moresome more some moresome more some moresome more some more.
</TextBox>
</Window>

Ответы [ 4 ]

2 голосов
/ 07 сентября 2010

Ответ удивителен!

Сразу после того, как я начал подозревать, что это может быть ошибка WPF, я обнаружил эту ветку форума .Парень, который задал вопрос, говорит: «В моем приложении используется средство визуализации DirectX из библиотеки DLL, написанной на C ++».Мой делает почти то же самое с той разницей, что мой рендерер написан на C # (MDX) и использует взаимодействие D3DImage.

Следуя шагам, упомянутым в потоке выше, я переместил инициализацию DirectX из OnInitialize () в функцию обратного вызова события Loaded изглавное окно и теперь полосы прокрутки вернули себе ожидаемый вид.Кажется, что GUI должен отображаться первым, до инициализации рендерера .

Так что я думаю, что разумно говорить об ошибке в этом случае.

1 голос
/ 07 сентября 2010

Кажется, это проблема стиля.Удалите явный установщик стиля из TextBox (проверьте как XAML, так и код позади).Если TextBox не имеет явного стиля, найдите неявные стили (определенные с помощью TargetType="TextBox" или TargetType="{x:Type TextBox}" и / или x:Key="{x:Type TextBox"}).

Попробуйте отслеживание вашего приложения и проверьте ScrollViewer Визуальное дерево.Это может дать вам некоторое представление о том, где искать.

Надеюсь, это поможет.

0 голосов
/ 25 октября 2013

Вы можете решить проблему, добавив CreateFlags.FpuPreserve во время создания вашего устройства D3D

Пример:

this.device = new Device(0, DeviceType.Hardware, this.handle,
    CreateFlags.HardwareVertexProcessing |
    CreateFlags.PureDevice |
    CreateFlags.FpuPreserve, this.pparams);
0 голосов
/ 07 сентября 2010

На предположение: ваш TextBox находится внутри StackPanel.Если вы хотите больше, чем предположение, вам нужно предоставить код.

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