我正在使用RichEditBox来允许用户输入文本(C#Windows 8) 我也允许在屏幕上重新定位RichEditBox 但是使用触摸屏和手指滚动文本而不是重新定位控件 如果使用鼠标,RichEditBox将在屏幕上重新定位
我试图在RichEditBox中禁用文本滚动来消除此问题。 试过
ScrollViewer.VerticalScrollModeProperty = ScrollBarVisibility.Disabled;
给出错误: 属性或索引器'Windows.UI.Xaml.Controls.ScrollViewer.VerticalScrollModeProperty'无法分配 - 它是只读的
有没有办法在RichEditBox中禁用文本滚动 或任何其他方式来解决这个问题?
答案 0 :(得分:0)
你有两个问题:
您正在尝试将VerticalScrollModeProperty设置为不会更改滚动模式的内容 - “ScrollBarVisibility.Disabled”会更改滚动条的可见性,但它不会禁用滚动。相反,您将要使用“ScrollMode.Disabled”。
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>
最后的注意事项 - 如果你去样式表路线,要使用该样式(“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"/>