Как отключить вертикальную прокрутку richeditbox

Я использую RichEditBox, чтобы позволить пользователю вводить текст (C# Windows 8). Я также разрешаю перемещать RichEditBox на экране, но с помощью сенсорного экрана и пальца текст прокручивается вместо перемещения элемента управления. Если используется мышь, RichEditBox получает перемещен на экране

Я пытался отключить прокрутку текста в RichEditBox, чтобы устранить эту проблему. Пробовал с

ScrollViewer.VerticalScrollModeProperty = ScrollBarVisibility.Disabled;

выдает ошибку: свойство или индексатор 'Windows.UI.Xaml.Controls.ScrollViewer.VerticalScrollModeProperty' нельзя назначить - оно доступно только для чтения

Есть ли способ отключить прокрутку текста в RichEditBox или любой другой способ решить эту проблему?

2 ответа

У вас есть две проблемы:

  1. Вы пытаетесь настроить VerticalScrollModeProperty на что-то, что не меняет режим прокрутки - "ScrollBarVisibility.Disabled" изменяет видимость полосы прокрутки, но не отключает прокрутку. Вместо этого вы захотите использовать "ScrollMode.Disabled".

  2. VerticalScrollModeProperty - это свойство, которое может быть получено только с помощью метода get (element.getValue(...)) и изменено с помощью метода set (element.setValue(...)). Некоторые свойства требуют, чтобы вы делали это вместо прямого доступа к ним (что вы пытались сделать с помощью синтаксиса ScrollViewer.VerticalScrollModeProperty = someValue). В будущем, если вы получите ошибку, описанную выше, скорее всего, ваш следующий шаг - попытаться использовать вместо этого getValue() и setValue() для этого свойства.

Так! Если вы хотите отключить вертикальную прокрутку на стороне C# (как вы пытались сделать выше), используйте это:

editBoxName.setValue(VerticalScrollModeProperty, ScrollMode.Disabled);

Если вы находитесь в таблице стилей (например, StandardStyles.xaml) и хотите установить это свойство вместо того, чтобы делать это программно (скажем, вам нужно несколько элементов RichEditBox с отключенной прокруткой), попробуйте следующее:

<Style x:Key="styleName" TargetType="RichEditBox">
    <Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled" />
    <!-- your other RichEditBox properties can go here, if you'd like -->
</Style>

Последнее замечание - если вы пойдете по пути таблицы стилей, чтобы правильно настроить RichEditBox с использованием этого стиля ("styleName"), вы захотите сделать следующее в XAML, где вы создаете экземпляр RichEditBox:

<RichEditBox x:Name="myEditBox" Style="{StaticResource ResourceKey=styleName}" />

Получилось работать с отключением режимов scrollviewer вместо свойств:

<RichEditBox AcceptsReturn="True" IsSpellCheckEnabled="True" 
                         ScrollViewer.VerticalScrollMode="Disabled"
                         ScrollViewer.HorizontalScrollMode="Disabled"
                         TextWrapping="Wrap" IsTapEnabled="True" IsHoldingEnabled="True"
                         IsDoubleTapEnabled="True" IsRightTapEnabled="True"
                         IsReadOnly="False" Height="{Binding Height}" 
                         Width="{Binding Width}" TextAlignment="{Binding TextAlignment}"
                         FontFamily="{Binding FontFamily}" FontSize="{Binding FontSize}"
                         ManipulationMode="All" GotFocus="TextItem_GotFocus" KeyDown="TextItem_KeyDown"                             
                         ManipulationDelta="EditBox_ManipulationDelta"/>
Другие вопросы по тегам