2

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

我试图禁用 RichEditBox 中的文本滚动以消除此问题。试过了

ScrollViewer.VerticalScrollModeProperty = ScrollBarVisibility.Disabled;

给出错误:不能将属性或索引器“Windows.UI.Xaml.Controls.ScrollViewer.VerticalScrollModeProperty”分配给——它是只读的

有什么方法可以禁用 RichEditBox 中的文本滚动或任何其他方法来解决这个问题?

4

2 回答 2

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"/>
于 2013-09-26T18:22:25.860 回答
0

你有两个问题:

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

  2. VerticalScrollModeProperty 是一个只能使用 getter (element.getValue(...)) 检索并使用 setter (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”),你需要在你实例化你的 RichEditBox 的 XAML 中执行以下操作:

<RichEditBox x:Name="myEditBox" Style="{StaticResource ResourceKey=styleName}" />
于 2013-09-17T23:34:38.987 回答