2 votes

comment désactiver le défilement vertical de richeditbox

J'utilise une RichEditBox pour permettre à l'utilisateur de saisir du texte (C# Windows 8). J'autorise également le repositionnement de la RichEditBox sur l'écran. Mais avec l'écran tactile et le doigt, le texte défile au lieu de repositionner le contrôle. Si la souris est utilisée, la RichEditBox est repositionnée à l'écran.

J'ai essayé de désactiver le défilement du texte dans RichEditBox pour éliminer ce problème. J'ai essayé avec

ScrollViewer.VerticalScrollModeProperty = ScrollBarVisibility.Disabled;

donne une erreur : La propriété ou l'indexeur 'Windows.UI.Xaml.Controls.ScrollViewer.VerticalScrollModeProperty' ne peut pas être assigné à -- il est en lecture seule.

Existe-t-il un moyen de désactiver le défilement du texte dans RichEditBox ? ou un autre moyen de résoudre ce problème ?

0voto

Vous avez deux problèmes :

  1. Vous essayez de définir la propriété VerticalScrollModeProperty sur un paramètre qui ne modifie pas le mode de défilement. "ScrollBarVisibility.Disabled" modifie la visibilité de la barre de défilement, mais ne désactive pas le défilement. Il est préférable d'utiliser "ScrollMode.Disabled".

  2. VerticalScrollModeProperty est une propriété qui ne peut être récupérée qu'avec un getter (element.getValue(...)), et modifiée avec un setter (element.setValue(...)). Certaines propriétés exigent que vous fassiez cela au lieu d'y accéder directement (c'est ce que vous essayiez de faire avec la syntaxe ScrollViewer.VerticalScrollModeProperty = someValue). À l'avenir, si vous obtenez l'erreur ci-dessus, il est fort probable que votre prochaine étape consiste à utiliser getValue() et setValue() pour cette propriété.

Donc, si vous voulez désactiver le défilement vertical du côté C# (comme vous essayiez de le faire ci-dessus), utilisez ceci :

editBoxName.setValue(VerticalScrollModeProperty, ScrollMode.Disabled);

Si vous vous trouvez dans la feuille de style (comme StandardStyles.xaml) et que vous souhaitez définir cette propriété à cet endroit au lieu de le faire de manière programmatique (par exemple, si vous souhaitez que le défilement de plusieurs éléments RichEditBox soit désactivé), essayez ceci :

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

Remarque finale : si vous optez pour la feuille de style, pour que votre RichEditBox utilise correctement ce style ("styleName"), vous devrez effectuer les opérations suivantes dans le XAML où vous instanciez votre RichEditBox :

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

0voto

ashish nirkhe Points 669

J'ai réussi à le faire fonctionner en désactivant les modes du scrollviewer au lieu des propriétés :

<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"/>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X