J'ai également fait face à ce problème et je l'ai finalement résolu d'une manière inhabituelle mais réussie. Nous utilisons les SDK Blend System.Windows.Interactivity
et Microsoft.Expressions.Interactions
.
Tout fonctionne correctement, sauf si le concepteur se bloque lors de l'utilisation d'un DataTrigger
hérité avec la même exception. Ce ne serait pas le bordel, mais l'exception brise également IntelliSense dans tout le document XAML, ce qui n'est pas acceptable. Comme il s'agit d'une erreur reprocducible et reportet, j'ai décidé de résoudre le problème en utilisant le désassemblage, car nous avons besoin des extensions de l'Interaction Framework.
Voir: http://connect.microsoft.com/VisualStudio/feedback/details/648819/visual-studio-2010-silverlight-designer-crash
simplement obtenir une versions de SharpDevelops ILSpy, et ouvrir les deux assemblées en son sein. Sélectionnez l'assemblage dans la liste et allez dans Fichier -> Enregistrer. Cela va démonter l'ensemble des projets. Intégrez-les dans une solution vide et modifiez les noms d'assembly. Reconstruisez la référence de la bibliothèque Expression.Interactions vers votre nouvelle version désassemblée.
Dans le AssemblyInfo.cs
, vous pouvez faire un tour.
En Microsoft.Expression.Interactions
:
[assembly: XmlnsPrefix("http://yourdomain.com/interactions", "i")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Core")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Input")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Layout")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Media")]
dans System.Windows.Interactivity
:
[assembly: XmlnsPrefix("http://yourdomain.com/interactions", "i")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "System.Windows.Interactivity")]
maintenant mettre une référence aux nouveaux projets dans votre assemblée, ou de construire des ensembles et copier une version d'entre eux dans votre dossier bibliothèques et référencez directement les versions construites.
En XAML ajouter le nouvel espace de noms à votre RootElement comme la page/fenêtre:
<RootElement xmlns:i="http://yourdomain.com/interactions">
<!-- your xaml code -->
<i:Interaction.Triggers> ... </i:Interaction.Triggers>
</RootElement>
Il fonctionne comme un charme.Vous pouvez utiliser à la fois les fonctionnalités d'interaction et d'expression combinées en un xmlns et, bien sûr, l'exception du concepteur a disparu et IntelliSense ne se cassera plus.
avez-vous essayé de référencer à nouveau l'assemblage? De plus, si vous utilisez une DLL externe avec un exemple de code provenant d'exemples en ligne, assurez-vous d'utiliser la même version de la DLL utilisée dans l'exemple. – Majd