8

J'ai un problème étrange d'ouvrir mon UserControl dans Expression Blend lors de l'utilisation d'un contrôle Silverlight Toolkit. Mon UserControl utilise ListBoxDragDropTarget de la boîte à outils comme suit:XamlParseException utilisant le contrôle Silverlight Toolkit dans Expression Blend

<controlsToolkit:ListBoxDragDropTarget mswindows:DragDrop.AllowDrop="True" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"> 
     <ListBox ItemsSource="{Binding MyItemControls}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
      <ListBox.ItemsPanel> 
       <ItemsPanelTemplate> 
        <controlsToolkit:WrapPanel/> 
       </ItemsPanelTemplate> 
      </ListBox.ItemsPanel> 
     </ListBox> 
</controlsToolkit:ListBoxDragDropTarget> 

Tout fonctionne comme prévu lors de l'exécution et semble très bien dans Visual Studio 2008. Cependant, lorsque je tente d'ouvrir mon UserControl dans le mélange que je reçois XamlParseException: [Ligne: 0 Position: 0] et je ne vois rien dans la vue de conception. Plus précisément Blend se plaint:

ne peut pas être affiché L'élément « ListBoxDragDropTarget » en raison d'un problème avec System.Windows.Controls.ListBoxDragDropTarget: incompatibilité TARGETTYPE.

Mon application silverlight fait référence System.Windows.Controls.Toolkit de la version de boîte à outils novembre 2009, et je me suis assuré d'inclure ces déclarations d'espace de noms pour le ListBoxDragDropTarget:

xmlns:controlsToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" 
xmlns:mswindows="clr-namespace:Microsoft.Windows;assembly=System.Windows.Controls.Toolkit" 

Si je commentez l'enveloppe de contrôle ListBoxDragDropTarget et laissez juste la ListBox Je peux voir tout bien dans la vue de conception sans erreurs. De plus, je me suis rendu ce qui se passe avec une variété de contrôles Silverlight Toolkit parce que si je commente sur ListBoxDragDropTarget et le remplacer par

<controlsToolkit:BusyIndicator /> 

la même erreur exacte se produit dans le mélange. Ce qui est encore plus bizarre, c'est que si je lance une nouvelle application Silverlight en mélange, je peux ajouter ces éléments de la boîte à outils sans aucune sorte d'erreur, donc cela ressemble à quelque chose de stupide avec mes références de projet aux assemblys. Je suis assez sûr que cela a quelque chose à voir avec le chargement des styles par défaut pour les contrôles toolkit à partir de son generic.xaml, puisque l'erreur a à voir avec TargetType et Blend essaie probablement de charger les styles par défaut.

Quelqu'un at-il déjà rencontré ce problème ou avez-vous des idées sur ce qui pourrait être mon problème?

+0

version Blend? – AnthonyWJones

+0

Expression Blend 3, spécifiquement 3.0.1927.0 –

Répondre

11

Bonjour nous avions exactement le même problème, nous l'avons résolu en vérifiant les références dans le projet qui avait ce problème. Tous les assemblys de toolkit référencés doivent se trouver dans le même répertoire sur le disque. Notre référence de projet à System.Windows.Controls.Toolkit.dll a toujours «sauté» au chemin original qui causait notre problème. Nous avons résolu le problème en éditant le fichier projet dans notepad ++ (ou l'un de vos éditeurs de texte favoris) et en codant en dur le chemin où il pourrait trouver l'assemblage.

Espérons que cela aide.

+0

I J'ai jeté le projet qui avait ce problème il y a longtemps et j'ai fini par faire d'autres choses, donc je n'ai aucun moyen de le vérifier, je vais le marquer comme la réponse pour le moment car il semble que d'autres –

+0

Merci beaucoup, vous avez vraiment sauvé deux jours de bêtise pour moi;) – Peymankh

+0

merci beaucoup vous avez sauvé ma journée aussi !! :) –

5

Pour Visual Studio (mélange peut-être trop), vous devez ajouter une référence à:

System.Windows.Controls.Toolkit.Internals.dll

« C: \ Program Files \ Microsoft SDKs \ Silverlight \ v4.0 \ Toolkit \ APR10 \ Bin \ System.Windows.Controls.Toolkit.Internals.dll "

+0

Ceci l'a résolu pour moi. Notez que la dernière version (pour Silverlight 5) se trouve dans «C: \ Program Files (x86) \ Microsoft SDK \ Silverlight \ v5.0 \ Toolkit \ dec11 \ Bin \ System.Windows.Controls.Toolkit.Internals.dll – andrewpm

1

J'utilise Silverlight 5 et boîte à outils ayant XamlParseException lorsque vous utilisez la boîte à outils BusyIndicator dans Expression Blend pour SL 5, toutes les solutions ci-dessus n'a pas aidé mais j'ai trouvé une autre solution, son assez sale, mais me permet de faire BusyIndecator travail expression Blend,

  1. dérivent du contrôle

    public class BusyIndicatorEx : BusyIndicator 
    { 
        public BusyIndicatorEx() 
        { 
         this.DefaultStyleKey = typeof(BusyIndicatorEx); 
        } 
    } 
    
  2. créer un style pour le contrôle dérivé (il suffit de copier le style de BusyIndicator code source th EME/generic.xaml et modifier le type de cible à local:BusyIndicatorEx)

+0

Comment puis-je copier le style de BusyIndicator Où est "themes/generic.xaml"? – Jordan

0

J'ai eu le même problème qui a été résolu en introduisant une référence factice dans le code derrière le panneau Wrap. Je sais que c'est un peu en C++ y mais je peux imaginer que c'est parce que nous avons une référence indirecte au panneau de retour à l'intérieur d'un template et non sur la page de niveau supérieur donc le chargeur ne sait pas quoi charger à l'initialisation . J'aime vraiment comprendre la raison exacte, cependant.

Je viens de présenter et System.Windows.Controls.Toolkit référencé ci-dessous membre dans le code derrière:

System.Windows.Controls.WrapPanel _dummy; 
Questions connexes