如何禁用richeditbox垂直滚动

时间:2013-04-11 18:10:06

标签: windows-runtime richedit

我正在使用RichEditBox来允许用户输入文本(C#Windows 8) 我也允许在屏幕上重新定位RichEditBox 但是使用触摸屏和手指滚动文本而不是重新定位控件 如果使用鼠标,RichEditBox将在屏幕上重新定位

我试图在RichEditBox中禁用文本滚动来消除此问题。 试过

ScrollViewer.VerticalScrollModeProperty = ScrollBarVisibility.Disabled;

给出错误: 属性或索引器'Windows.UI.Xaml.Controls.ScrollViewer.VerticalScrollModeProperty'无法分配 - 它是只读的

有没有办法在RichEditBox中禁用文本滚动 或任何其他方式来解决这个问题?

2 个答案:

答案 0 :(得分:0)

你有两个问题:

  1. 您正在尝试将VerticalScrollModeProperty设置为不会更改滚动模式的内容 - “ScrollBarVisibility.Disabled”会更改滚动条的可见性,但它不会禁用滚动。相反,您将要使用“ScrollMode.Disabled”。

  2. VerticalScrollModeProperty是一个只能使用getter(element.getValue(...))检索的属性,并使用setter(element.setValue(...))进行更改。某些属性要求您执行此操作而不是直接访问它们(这是您尝试使用语法ScrollViewer.VerticalScrollModeProperty = someValue执行的操作)。将来,如果你得到上面的错误,你的下一步可能是尝试使用该属性的getValue()和setValue()。

  3. 原来如此!如果你想在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>
    

    最后的注意事项 - 如果你去样式表路线,要使用该样式(“styleName”)正确地获取RichEditBox,你需要在XAML中执行以下操作来实例化你的RichEditBox:

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

答案 1 :(得分:0)

使用它来禁用滚动查看器模式而不是属性:

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