标签: avalonedit

如何暂停Avalonedit的Undostack?

  • 我在编辑器上执行了大量的文本更改
  • 我不能(或非常难)确定更改何时开始结束(通过滚动释放文本更改)
  • 我不希望能够撤消更改

由于这个原因,我想暂停监听堆栈(或在任何textchange之后执行pop).但

  • 堆栈没有提供弹出stackelement而不执行undo的方法
  • 我不想完全清除堆栈
  • 没有方法从文本文档中分离堆栈
  • 没有办法暂停收听

你知道解决这个问题的可能性吗?

c# wpf stack avalonedit

5
推荐指数
1
解决办法
1075
查看次数

如何将DocumentColorizingTransformer添加到AvalonEdit

我已经实现了自己的DocumentColorizingTransformer.但是现在,我如何将它添加到AvalonEdit?

c# wpf sharpdevelop avalonedit

5
推荐指数
1
解决办法
1108
查看次数

以编程方式向AvalonEdit添加语法突出显示规则

我在一个运行我自己的定制语言的应用程序中使用AvalonEdit.我想在Avalon Edit中加入适当的语法高亮显示.通常,这是通过手动定义xml文件中的突出显示规则来完成的.

但是,每当我扩展语言时,我都不希望突出显示规则总是与语言语法不同步.所以我希望使用已经包含在我的coco/R解析器中的语法信息来自动生成这些规则.那么有没有办法以编程方式向Avalon Edit添加语法突出显示规则?

谢谢

syntax-highlighting avalonedit

5
推荐指数
2
解决办法
3137
查看次数

Avalonedit 如何以编程方式更改文本的背景

我想实现一些在提供文档行时以编程方式更改文本背景的东西。(看起来与文本块选择非常相似的东西。我将使用它来调试我正在使用的 IDE 的断点设计)。我不想使用选择,因为它会导致文本框滚动。

我想我需要使用 DocumentColorizingTransformer 但我不是 100% 确定如何去做。

public class ColorizeAvalonEdit : ICSharpCode.AvalonEdit.Rendering.DocumentColorizingTransformer
    {
        protected override void ColorizeLine(ICSharpCode.AvalonEdit.Document.DocumentLine line)
        {
            int lineStartOffset = line.Offset;
            string text = CurrentContext.Document.GetText(line);
            int start = 0;
            int index;
            if (line.LineNumber == LogicSimViewCodeWPFCtrl.currentLine)
            {
                while ((index = text.IndexOf(text, start)) >= 0)
                {
                    base.ChangeLinePart(
                        lineStartOffset + index, // startOffset
                        lineStartOffset + index + text.Length, // endOffset
                        (VisualLineElement element) =>
                        {
                            element.TextRunProperties.SetBackgroundBrush(Brushes.Red);

                        });
                    start = index + 1; // search for next occurrence
                }
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf text-editor avalonedit

5
推荐指数
1
解决办法
5975
查看次数

在avalonEdit上显示边框:TextEditor

我试图让一个边框显示avalonEdit在Wpf控件中的"盒子" 周围,但似乎无法实现它.

我补充说BorderBrush="Black" BorderThickness="2"但很明显我错过了一些东西.

我用谷歌搜索了,但是,尽管我的努力,我找不到任何东西 - 我怀疑我可能不知道谷歌的正确术语,因为它感觉它应该是直截了当的!

代码如下:

    <Label Content="Account:" HorizontalAlignment="Left" Margin="10,28,0,0" VerticalAlignment="Top"/>
    <TextBox Name ="textBoxAccount" HorizontalAlignment="Left" Height="23" Margin="66,28,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120"/>
    <Label Content="Query:" HorizontalAlignment="Left" Margin="10,59,0,0" VerticalAlignment="Top"/>

    <Button x:Name="btnGo" Content="Go!" HorizontalAlignment="Left" Height="25" Margin="10,342,0,0" VerticalAlignment="Top" Width="146"/>

    <avalonEdit:TextEditor
        xmlns:avalonEdit="http://icsharpcode.net/sharpdevelop/avalonedit"
        x:Name="textEditor"
        FontFamily="Consolas"
        SyntaxHighlighting="AWQL"
        ScrollViewer.VerticalScrollBarVisibility="Hidden"
        WordWrap="True"
        Visibility="Visible"
        BorderBrush="Black" BorderThickness="2"
        FontSize="10pt" Margin="12,89.96,10,0" Height="229" VerticalAlignment="Top"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

它呈现如下:

在此输入图像描述

但'avalonEdit'框似乎没有渲染边框,所以看起来不可见,除非/直到用户点击它并开始输入.

我真的希望边框看起来与用户控件顶部的简单文本框相同,但现在我已经满足于任何可见的东西了!

c# wpf xaml avalonedit

5
推荐指数
1
解决办法
1077
查看次数

AvalonEdit不在CompletionWindow中显示KeyDown事件的数据

我将AvalonEdit用作TextEditor,并且当从Key_Down按钮调用该代码时,不在CodeCompletionWindow中显示数据,但是当作为Text_Entered事件处理时,一切正常。下面是示例代码

[Serializable]
public class CodeEditor : TextEditor
{
    public CompletionWindow CompletionWindow = null;
    public CodeEditor()
    {
        //CompletionWindow pops up without any data.
        this.TextArea.KeyDown += TextArea_KeyDown; 
        //CompletionWindow pops up and data is displayed.
        this.TextArea.TextEntered += this.OnTextEntered;
    }

    void TextArea_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Space && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
        {
            ShowCompletion("");
        }
    }

    void OnTextEntered(object sender, TextCompositionEventArgs e)
    {
        //e.Handled = true;

        if (e.Text == "\n" || e.Text == "\t" || e.Text == " ")
        {
            return; …
Run Code Online (Sandbox Code Playgroud)

code-completion avalonedit

5
推荐指数
1
解决办法
442
查看次数

AvalonEdit - 用于JSON突出显示的xshd

是否有一个用于AvalonEdit控件的xshd规则集以突出显示JSON语法?我尝试了JavaScript的定义,但它不能很好地工作,即:

{
   "name" : "value"
}
Run Code Online (Sandbox Code Playgroud)

使用JavaScript定义,名称和值都具有相同的颜色.

是否有JSON的规则集,如果没有,我如何修改xshd以便在JSON中获得名称和值的不同颜色?

wpf avalonedit

5
推荐指数
1
解决办法
1819
查看次数

AvalonEdit WPF TextEditor(SharpDevelop):如何突出显示特定范围的文本?

令人难以置信的令人敬畏的AvalonEdit WPF TextEditor控件似乎缺乏一个重要的功能,或者至少我无法弄明白.给定偏移量和长度,使用HighlightColor突出显示TextDocument中的该部分.简单吧?

显然不是.我有RTFM,关于"语法突出显示"的文档让我更加困惑.有人在SharpDevelop论坛上问了同样的问题,我恐怕无法理解Herr Grunwald的回答.

这是我的尝试,使用DocumentHighlighter类(当然它不起作用):

    textEditor1.Text = "1234567890";

    HighlightingColor c = new HighlightingColor() { FontWeight = FontWeights.ExtraBold };

    DocumentHighlighter dh = new DocumentHighlighter(textEditor1.Document, new HighlightingRuleSet());
    HighlightedLine hl = dh.HighlightLine(1);

    hl.Sections.Add(new HighlightedSection() { Color = c, Offset = 1, Length = 3 });
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮忙!

.net c# wpf sharpdevelop avalonedit

4
推荐指数
3
解决办法
9357
查看次数

AvalonEdit for ironPython Scripts?

是否可以在WPF应用程序中使用AvalonEdit控件作为ironPython脚本编辑器?要求是具有语法突出显示和内联脚本验证.如果可能的话,intellisense会更好.如果不是AvalonEdit,请建议任何其他此类控件(即使是商业用途)可用于此目的.

提前致谢

c# wpf ironpython avalonedit

4
推荐指数
1
解决办法
2577
查看次数

在ListView的ItemTemplate中使用的AvalonEdit中的挂钩命令不起作用

我在我的项目中使用了AvalonEdit控件.当我使用Ctrl + C或Ctrl + V等快捷键时,相关的复制/粘贴命令可以正常工作.我决定在上下文菜单中使用这些命令以获得更多可用性,因为有些用户习惯于右键单击而不是快捷方式.我使用以下XAML代码进行控制:

<avalonedit:TextEditor.ContextMenu>
    <ContextMenu>
         <MenuItem Command="Undo" />
         <MenuItem Command="Redo" />
         <Separator/>
         <MenuItem Command="Cut" />
         <MenuItem Command="Copy" />
         <MenuItem Command="Paste" />
     </ContextMenu>
</avalonedit:TextEditor.ContextMenu>
Run Code Online (Sandbox Code Playgroud)

但是当我运行程序时,这些命令总是在上下文菜单中显示为禁用,如下所示:

上下文菜单的截图

当我第一次遇到这个问题时,我发布了一个不同的问题但是在MD.Unicorn的帮助下(正如你在下面的评论中看到的)我意识到当你将AvalonEdit放在ListBox或ListView命令的ItemTemplate中时不起作用.

在MD.unicorn的帮助下,我创建了以下测试代码来重现结果:

ViewModel类和数据模板的简单类

public class MyViewModel : INotifyPropertyChanged
{
    public MyViewModel()
    {
        collection = new ObservableCollection<myClass>();
        mc = new myClass();
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string propName)
    {
        var h = PropertyChanged;
        if (h != null)
            h(this, new PropertyChangedEventArgs(propName));
    }

    public ObservableCollection<myClass> collection { get; set; }
    public myClass …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf binding avalonedit

4
推荐指数
1
解决办法
2756
查看次数