无法在AvalonEdit的基本用法中输入空格

时间:2014-05-13 04:23:26

标签: avalonedit

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

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

1 个答案:

答案 0 :(得分: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或以后的事件上添加空间,该空间被我在放置编辑器的容器上执行的键绑定所覆盖。此行为与默认情况下的文本框不同,后者会自动捕获空间

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