2009-06-19 6 views
2

J'essaie d'utiliser le contrôle ICSharpCode.AvalonEdit.TextEditor du projet SharpDevelop 4.0 dans une application WPF que je construis, mais je n'arrive pas à le faire fonctionner.En utilisant ICSharpCode.AvalonEdit sur .Net 3.5?

J'ai extrait une copie du code source de svn: //svnmirror.sharpdevelop.net/sharpdevelop/trunk/SharpDevelop/src/Libraries/AvalonEdit à la révision 4304. Ensuite, j'ai construit le projet en utilisant Visual Studio 2008 SP1 , qui a réussi sans erreurs.

Je puis créé un nouveau projet WPF vide, a ajouté la DLL de construction de la boîte à outils et laissé tomber le contrôle de TextEditor sur la valeur par défaut fenêtre vide, comme ceci:

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

Cependant, quand je lance le projet, la forme apparaît complètement vide. Aucun curseur, le curseur de la souris reste le pointeur par défaut et la fenêtre ne répond pas aux pressions de touche.

Ai-je raté quelque chose, ou AvalonEdit est-il juste un peu cassé?

[EDIT: Je commence à penser qu'il pourrait être lié à ma configuration spécifique. Je cours le Windows 7 RC 64 bits. Est-ce que ça a quelque chose à voir avec ça? J'ai essayé de le construire pour x86 seulement, n'a fait aucune différence.]

Répondre

2

Êtes-vous sûr que votre déclaration d'espace de noms est correcte?

Vous pouvez essayer quelque chose comme ceci:

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

j'ai pu le faire fonctionner sans aucun problème.

+0

Juste essayé, ne fait aucune différence sur ma machine. Quelle révision du code source/des binaires utilisez-vous? – Jacob

+0

En utilisant également 4304. Je viens de vérifier la partie AvalonEdit. J'ai dû modifier le fichier de projet pour le construire. Ensuite, j'ai ajouté une référence à cette DLL dans mon projet et ensuite utilisé le xaml donné ci-dessus. Je n'ai pas ajouté le contrôle à la boîte à outils. –

+0

oh, et, je cours sur Vista 32 bits. Puisque vous n'avez pas eu d'erreurs de compilation, cela pourrait très bien être un problème d'architecture. –

0

Le TextEditor AvalonEdit est juste une vue pour un modèle TextDocument. Le problème était qu'une nouvelle instance d'AvalonEdit n'était connectée à aucune instance de modèle, donc il n'y avait rien à éditer.

La raison pour laquelle le code de statictype a fonctionné était qu'il n'utilisait pas <avalonedit:TextEditor/>, mais <avalonedit:TextEditor></avalonedit:TextEditor>. Cela affectera une chaîne vide à la propriété Text, ce qui a provoqué la création implicite d'un nouveau document par l'éditeur.

Mais ceci n'est plus pertinent avec les versions récentes d'AvalonEdit, l'éditeur va maintenant toujours créer un nouveau TextDocument.

+0

Comment est-il récent? – Jacob

+0

En fait, il était plus longtemps que je pensais - révision 3930. Depuis que vous utilisez 4304, il doit y avoir un problème différent dans votre cas. Ensuite, je suppose que l'éditeur de texte ne trouve pas son modèle. Aucune idée pourquoi cela se produirait, cependant. – Daniel

0

Cela fonctionne pour moi avec la dernière version

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