C# 使用Windows XAML RichEditBox制作自定义编辑器

C# 使用Windows XAML RichEditBox制作自定义编辑器,c#,xaml,winrt-xaml,C#,Xaml,Winrt Xaml,我正在使用C#和XAML RichEditBox创建一个带有自定义键盘的文本编辑器。我需要能够模拟通常由内置键盘处理的功能。我希望您能帮助我理解以下内容: 阻止键盘显示(有一个属性可以防止键盘显示在程序焦点上,但不能显示在用户焦点上。我也可以通过设置IsReadOnly属性来隐藏它,但这样我就无法修改文本) 处理退格。文档上有一个删除功能。选择,但它作为删除,而不是退格(从错误的方向拉) 需要防止水平滚动。即使HorizontalScrollVisibility设置为Disabled,文本也只

我正在使用C#和XAML RichEditBox创建一个带有自定义键盘的文本编辑器。我需要能够模拟通常由内置键盘处理的功能。我希望您能帮助我理解以下内容:

  • 阻止键盘显示(有一个属性可以防止键盘显示在程序焦点上,但不能显示在用户焦点上。我也可以通过设置IsReadOnly属性来隐藏它,但这样我就无法修改文本)
  • 处理退格。文档上有一个删除功能。选择,但它作为删除,而不是退格(从错误的方向拉)
  • 需要防止水平滚动。即使HorizontalScrollVisibility设置为Disabled,文本也只是从侧面滚动。不知道在这里还能做什么
很抱歉把三个问题塞进一个问题里,但似乎有知识的人用这种方式会更容易。谢谢

为了简化,以下是我当前的属性:

VerticalAlignment=“Stretch”HorizontalAlignment=“Stretch”AcceptsReturn=“True”IsTextPredictionEnabled=“False”PreventKeyboardDisplayOnProgrammaticFocus=“True”IsSpellCheckEnabled=“False”VerticalContentAlignment=“Top”ScrollViewer.VerticalScrollBarVisibility=“Auto”ScrollViewer.HorizontalScrollScrollBarVisibility=“Disabled”


需要防止水平滚动:


我猜这个RichEditBox包含在ScrollViewer中。您可以设置HorizontalAlignment=“Stretch”,它表示获取父元素的整个布局。将其设置为居中、左或右。

您希望backspace做什么?我希望它正常运行,即将角色移到左侧(假设从左到右布局)。删除删除右侧的字符。因为我是从头开始做键盘的,所以我需要自己来实现。我不想操纵包含的字符串。我正在使用文档方法。以下是我尝试过的:
EditBox.Document.Selection.Delete(Windows.UI.Text.TextRangeUnit.Character,1)确定。我也弄明白了。原来你只删除了-1个字符!我还没有把它放到ScrollViewer中,虽然默认的模板可能会使用它。将RichEditBox更改为“中心”只会使其缩小并与中心对齐。我刚刚发现了另一个与滚动相关的属性,但它也没有帮助:
ScrollViewer.HorizontalScrollMode=“Disabled”
我需要它来包装文字!然后你需要发布你的整个布局。如果我只是拿一个,把一个放进去,我就不会得到水平滚动和文本换行。我看到你的行为是在ScrollViewer中放置了一些东西,它有无限的水平和垂直空间。Grrr。刚刚找到它
TextWrapping=“WrapWholeWords”
但它仍然没有包装。很明显,它确实认为它在更广泛的家长控制之下。谢谢你的帮助!它实际上是网格中的一个简单的RichEditBox:`Properties省略了,因为它们已经在上面了,我已经没有字符了!因此,包装的正确答案是
TextWrapping=“Wrap”
这是一种非英语语言,因此必须对此进行解释。太难了!