2

我将 AvalonEditor 的一个简单实例放入 WPF 用户控件中,它会忽略我尝试输入的任何空格。但是其他文字很好。我没有配置任何突出显示或更改控制模板。我是否需要在控件上配置设置以接受空格?谢谢

        <avalonEdit:TextEditor
            HorizontalScrollBarVisibility="Visible"
            VerticalScrollBarVisibility="Auto">
            Rob was here
        </avalonEdit:TextEditor>
4

1 回答 1

0

我遇到过同样的问题。

这是我的解决方案:

  1. 从 AvalonEdit TextEditor 类继承
  2. 覆盖 OnPreviewKeyDown 回调(或订阅 PreviewKeyDown 事件)。
public class MyEditor : CSharpCode.AvalonEdit.TextEditor
{
    protected override void OnPreviewKeyDown(KeyEventArgs e)
        {
            if (e.Key == System.Windows.Input.Key.Space)
            {
                e.Handled = true;
                Document.Insert(CaretOffset, " ");
            }
            base.OnPreviewKeyDown(e);
        }
}

我将事件设置为已处理并附加空间。我认为编辑器将在 keyup 或稍后的事件上添加空格,这被我在放入编辑器的容器上所做的键绑定覆盖。这种行为与文本框默认值不同,它会自动捕获空格.

我知道这有点 hacky,但至少它现在有效。我想如果我要对另一个键进行另一个键绑定,我也必须在回调中处理它。如果有人有更好(更通用)的解决方案,请告诉我。

于 2019-09-22T09:21:26.767 回答