2009-06-19 9 views
2

Ich versuche, das ICSharpCode.AvalonEdit.TextEditor-Steuerelement aus dem SharpDevelop 4.0-Projekt in einer WPF-App, die ich erstelle, zu verwenden, aber ich kann es scheinbar nicht zum Laufen bringen.Verwenden von ICSharpCode.AvalonEdit auf .Net 3.5?

Ich habe eine Kopie des Quellcodes von svn: //svnmirror.sharpdevelop.net/sharpdevelop/trunk/SharpDevelop/src/Libraries/AvalonEdit bei Revision 4304 ausgecheckt. Dann baute ich das Projekt mit Visual Studio 2008 SP1 , was ohne Fehler gelang.

Ich habe dann ein neues leeres WPF-Projekt, hinzugefügt, um den Build-DLL auf die Toolbox und legte mit dem Texteditor-Steuerelement auf die Standard leeren Fenster, etwa so:

<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> 

Allerdings, wenn ich das Projekt ausführen, die Formular wird komplett leer angezeigt. Kein Caret, der Mauszeiger bleibt der Standardzeiger und das Fenster reagiert nicht auf Tastendrücke.

Fehle ich etwas, oder ist AvalonEdit nur ein bisschen kaputt?

[BEARBEITEN: Ich beginne zu denken, dass es zu meinem spezifischen Setup verwandt sein könnte. Ich benutze den 64-Bit Windows 7 RC. Könnte das etwas damit zu tun haben? Ich habe versucht, es nur für x86 zu bauen, machte keinen Unterschied.]

Antwort

2

Sind Sie sicher, dass Ihre Namespace-Deklaration korrekt ist? so etwas wie dieses

Sie können versuchen:

<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> 

konnte ich es ohne Probleme zur Arbeit kommen.

+0

Gerade versucht, dass, macht keinen Unterschied, auf meinem Rechner. Welche Version des Quellcodes/der Binärdateien verwenden Sie? – Jacob

+0

Auch mit 4304. Ich habe gerade den AvalonEdit Teil ausgecheckt. Ich musste die Projektdatei ändern, um sie zu erstellen. Dann habe ich einen Verweis auf diese DLL in meinem Projekt hinzugefügt und dann den oben angegebenen XAML verwendet. Ich habe das Steuerelement nicht zur Toolbox hinzugefügt. –

+0

oh, und ich laufe auf 32-Bit-Vista. Da Sie keine Kompilierungsfehler erhalten haben, könnte es sich um ein Architekturproblem handeln. –

0

Der AvalonEdit TextEditor ist nur eine Ansicht für ein TextDocument-Modell. Das Problem war, dass eine neue AvalonEdit-Instanz nicht gestartet wurde, die mit einer Modellinstanz verbunden war. Daher gab es nichts zu bearbeiten.

Der Grund, warum der Code von statictype arbeitete, war, dass er <avalonedit:TextEditor/> nicht verwendete, sondern <avalonedit:TextEditor></avalonedit:TextEditor>. Dadurch wird der Text-Eigenschaft eine leere Zeichenfolge zugewiesen, wodurch der Editor implizit ein neues Dokument erstellt.

Dies ist jedoch bei neueren AvalonEdit-Versionen nicht mehr relevant, der Editor erstellt nun immer ein neues TextDocument. Diese

+0

Genau wie neu ist neu? – Jacob

+0

Eigentlich war es länger her als ich dachte - Revision 3930. Da Sie 4304 verwenden, muss es in Ihrem Fall ein anderes Problem sein. Dann würde ich vermuten, dass der Texteditor seine Vorlage nicht findet. Keine Ahnung, warum das passieren würde. – Daniel

0

funktioniert für mich mit den neuesten

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