Использование ICSharpCode.AvalonEdit на .Net 3.5? - PullRequest
2 голосов
/ 20 июня 2009

Я пытаюсь использовать элемент управления ICSharpCode.AvalonEdit.TextEditor из проекта SharpDevelop 4.0 в приложении WPF, которое я создаю, но не могу заставить его работать.

Я извлек копию исходного кода из svn: //svnmirror.sharpdevelop.net/sharpdevelop/trunk/SharpDevelop/src/Libraries/AvalonEdit в версии 4304. Затем я создал проект с использованием Visual Studio 2008 SP1, которая прошла без ошибок.

Затем я создал новый пустой проект WPF, добавил DLL-библиотеку сборки на панель инструментов и поместил элемент управления TextEditor в пустое окно по умолчанию, например:

<Window x:Class="AvalonEditTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:avalonedit="http://icsharpcode.net/sharpdevelop/avalonedit"        
    Title="Window1" Height="300" Width="300" >
    <Grid x:Name="LayoutRoot">
        <avalonedit:TextEditor Name="textEditor" />
    </Grid>
</Window>

Однако, когда я запускаю проект, форма появляется полностью пустой. Без разницы, курсор мыши остается указателем по умолчанию, а окно не реагирует на нажатия клавиш.

Я что-то упустил или AvalonEdit немного сломан?

[РЕДАКТИРОВАТЬ: я начинаю думать, что это может быть связано с моей конкретной настройкой. Я использую 64-битную Windows 7 RC. Может быть, это как-то связано с этим? Я пытался собрать его только для x86, без разницы.]

Ответы [ 3 ]

2 голосов
/ 12 июля 2009

Вы уверены, что ваша декларация пространства имен верна?

Вы можете попробовать что-то вроде этого:

<Window x:Class="Editor.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300" 
    xmlns:e="clr-namespace:ICSharpCode.AvalonEdit;assembly=ICSharpCode.AvalonEdit">
    <Grid>
        <e:TextEditor x:Name="Editor" WordWrap="True" Height="200">          
        </e:TextEditor>
    </Grid>
</Window>

Я смог заставить его работать без проблем.

0 голосов
/ 30 июля 2009

Это работает для меня с последней сборкой

<DockPanel LastChildFill="True">
    <avalonedit:TextEditor 
        HorizontalAlignment="Stretch"
        Name="textEditor1" 
        VerticalAlignment="Stretch" />
</DockPanel>
0 голосов
/ 21 июля 2009

AvalonEdit TextEditor - это просто представление для модели TextDocument. Проблема заключалась в том, что новый экземпляр AvalonEdit не был подключен ни к одному экземпляру модели, поэтому редактировать было нечего.

Причина, по которой работал код из statictype, заключалась в том, что он не использовал <avalonedit:TextEditor/>, а <avalonedit:TextEditor></avalonedit:TextEditor>. Это назначит пустую строку свойству Text, что привело к неявному созданию редактором нового документа.

Но это больше не относится к последним версиям AvalonEdit, редактор теперь всегда будет создавать новый TextDocument.

...