Я пытаюсь использовать элемент 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 немного сломан?
[EDIT: Я начинаю думать, что это может быть связано с моей конкретной настройкой. Я запускаю 64-битный Windows 7 RC. Может быть, что-то с этим связано? Я попытался создать его только для x86, не имеет значения.]
Вы уверены, что ваша декларация пространства имен верна?
Вы можете попробовать что-то вроде этого:
<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>
Мне удалось заставить его работать без каких-либо проблем.
Это работает для меня с последней версией
<DockPanel LastChildFill="True">
<avalonedit:TextEditor
HorizontalAlignment="Stretch"
Name="textEditor1"
VerticalAlignment="Stretch" />
</DockPanel>
AvalonEdit TextEditor - это просто представление для модели TextDocument. Проблема заключалась в том, что новый экземпляр AvalonEdit не подключался к какому-либо экземпляру модели, поэтому редактировать ничего не удалось.
Причина, по которой работает код statictype, заключалась в том, что он не использовал <avalonedit:TextEditor/>
, но <avalonedit:TextEditor></avalonedit:TextEditor>
. Это присвоит пустой строке свойство Text, что заставит редактор неявно создать новый документ.
Но это не относится к последним версиям AvalonEdit, теперь редактор всегда будет создавать новый TextDocument.