2009-06-19 6 views
2

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

Я проверил копию исходного кода из 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 немного сломан?

[EDIT: Я начинаю думать, что это может быть связано с моей конкретной установкой. Я запускаю 64-битный Windows 7 RC. Может быть, что-то с этим связано? Я попытался построить его только для x86, не имеет значения.]

ответ

2

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

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

<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

Просто попытался, что нет никакой разницы на моей машине. Какую ревизию исходного кода/двоичных файлов вы используете? – Jacob

+0

Также используя 4304. Я только что проверил часть AvalonEdit. Мне пришлось изменить файл проекта, чтобы он был создан. Затем я добавил ссылку на эту DLL в моем проекте, а затем использовал приведенный выше xaml. Я не добавлял элемент управления в панель инструментов. –

+0

ой, и я работаю на 32-битной Vista. Так как вы не получили ошибок компиляции, это может быть проблемой архитектуры. –

0

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

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

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

+0

Точно как недавние последние? – Jacob

+0

На самом деле прошло больше времени, чем я думал - редакция 3930. Поскольку вы используете 4304, это должно быть другой проблемой в вашем случае. Тогда я предполагаю, что текстовый редактор не находит свой шаблон. Не знаю, почему это произойдет. – Daniel

0

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

<DockPanel LastChildFill="True"> 
    <avalonedit:TextEditor 
     HorizontalAlignment="Stretch" 
     Name="textEditor1" 
     VerticalAlignment="Stretch" /> 
</DockPanel>