Question

J'ai un problème étrange ouvrir mon UserControl dans Expression Blend lorsque vous utilisez un contrôle Silverlight Toolkit. Mon UserControl utilise ListBoxDragDropTarget de la boîte à outils comme suit:

<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 à l'exécution et semble très bien dans Visual Studio 2008. Cependant, lorsque je tente d'ouvrir mon UserControl dans Blend-je obtenir XamlParseException: [Ligne: 0 Position: 0] et je peux ne vois rien dans la vue de la 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. Décalage 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 commente sur l'emballage de contrôle de ListBoxDragDropTarget et juste laisser la zone de liste, je peux voir tout va bien dans la vue de la 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 étrange est que si je commence une nouvelle marque d'application silverlight dans le mélange que je peux ajouter ces éléments de boîte à outils sans aucune erreur, il semble que quelque chose de stupide qui se passe avec mes références de projet aux assemblées de la boîte à outils.

Je suis assez sûr que cela a quelque chose à voir avec le chargement des styles par défaut pour les commandes de la boîte à outils de son generic.xaml, puisque l'erreur doit faire avec le TargetType et Blend tente probablement de charger les styles par défaut.

Quelqu'un at-il rencontré ce problème avant ou avoir des idées quant à ce qui pourrait être mon problème?

Était-ce utile?

La solution

Salut, nous avions exactement la même question, nous l'avons résolu en vérifiant les références du projet qui était d'avoir ce problème. Tous les ensembles de boîte à outils référencés doivent être dans le même répertoire sur le disque.

Notre référence de projet à la System.Windows.Controls.Toolkit.dll toujours « sauté » vers le chemin qui orginal était à l'origine de notre problème. Nous avons résolu en éditant le fichier de projet dans notepad ++ (ou l'un de vos éditeur de texte favori) et hardcode le chemin où il pourrait trouver l'ensemble.

Hope this helps.

Autres conseils

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"

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

  1. dériver de commande

    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 à partir du code source BusyIndicator à des thèmes / generic.xaml et modifier le type de cible à local:BusyIndicatorEx)

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 qu'il est un peu C ++ y, mais je peux l'imaginer parce que nous avons une référence indirecte à l'intérieur d'un panneau envelopper modèle et non sur la page de haut niveau afin que le chargeur ne sais 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é membres suivants dans le code derrière:

System.Windows.Controls.WrapPanel _dummy;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top