Как отключить вертикальную прокрутку richeditbox
Я использую RichEditBox, чтобы позволить пользователю вводить текст (C# Windows 8). Я также разрешаю перемещать RichEditBox на экране, но с помощью сенсорного экрана и пальца текст прокручивается вместо перемещения элемента управления. Если используется мышь, RichEditBox получает перемещен на экране
Я пытался отключить прокрутку текста в RichEditBox, чтобы устранить эту проблему. Пробовал с
ScrollViewer.VerticalScrollModeProperty = ScrollBarVisibility.Disabled;
выдает ошибку: свойство или индексатор 'Windows.UI.Xaml.Controls.ScrollViewer.VerticalScrollModeProperty' нельзя назначить - оно доступно только для чтения
Есть ли способ отключить прокрутку текста в RichEditBox или любой другой способ решить эту проблему?
2 ответа
У вас есть две проблемы:
Вы пытаетесь настроить VerticalScrollModeProperty на что-то, что не меняет режим прокрутки - "ScrollBarVisibility.Disabled" изменяет видимость полосы прокрутки, но не отключает прокрутку. Вместо этого вы захотите использовать "ScrollMode.Disabled".
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"/>