Domanda

Sto avendo un problema strano aprendo il mio UserControl in Expression Blend quando si utilizza un controllo Toolkit Silverlight. Il mio UserControl utilizza ListBoxDragDropTarget del toolkit nel seguente modo:

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

Tutto funziona come previsto in fase di esecuzione e guarda bene in Visual Studio 2008. Tuttavia, quando si tenta di aprire il mio UserControl in Blend ottengo XamlParseException: [Linea: 0 Posizione: 0] e posso non si vede nulla nella vista di disegno. Più in particolare si lamenta Miscela:

  

L'elemento "ListBoxDragDropTarget" non può essere visualizzata a causa di un problema con System.Windows.Controls.ListBoxDragDropTarget:. Disadattamento TargetType

La mia applicazione Silverlight fa riferimento System.Windows.Controls.Toolkit dal rilascio toolkit novembre 2009, e ho fatto in modo di includere queste dichiarazioni di namespace per la ListBoxDragDropTarget:

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

Se commento fuori l'involucro di controllo ListBoxDragDropTarget e lasciarmi il ListBox posso vedere tutto bene in vista di disegno senza errori. Inoltre, ho capito che questo sta accadendo con una varietà di controlli Silverlight Toolkit perché se io commento ListBoxDragDropTarget e sostituirlo con

<controlsToolkit:BusyIndicator />

lo stesso errore esatto si verifica in Blend. Ciò che è ancora più strano è che se inizio una nuova applicazione Silverlight in miscela posso aggiungere questi elementi toolkit senza alcun tipo di errore, così sembra qualcosa di stupido che sta accadendo con il mio progetto riferimenti alle assemblee toolkit.

Sono abbastanza sicuro che questo ha qualcosa a che fare con il caricamento dei stili predefiniti per i controlli del toolkit dalla sua generic.xaml, dal momento che l'errore ha a che fare con la TargetType e miscela è probabilmente cercando di caricare gli stili predefiniti.

Qualcuno ha riscontrato questo problema prima o avete qualunque idee su ciò che potrebbe essere il mio problema?

È stato utile?

Soluzione

Ciao avevamo esattamente lo stesso problema, abbiamo risolto controllando i riferimenti nel progetto che è stato avendo questo problema. Tutti i gruppi toolkit fa riferimento dovrebbero essere nella stessa directory sul disco.

Il nostro progetto riferimento alla System.Windows.Controls.Toolkit.dll sempre 'saltato' torna al percorso originale, che stava causando il nostro problema. Abbiamo risolto modificando il file di progetto in Notepad ++ (o uno dei suoi editor di testo preferito) e hardcode il percorso in cui si poteva trovare l'assemblaggio.

Spero che questo aiuti.

Altri suggerimenti

Per Visual Studio (forse troppo miscela) è necessario aggiungere un riferimento a:

System.Windows.Controls.Toolkit.Internals.dll

"C: \ Program Files \ Microsoft SDK \ Silverlight \ v4.0 \ Toolkit \ Apr10 \ Bin \ System.Windows.Controls.Toolkit.Internals.dll"

sto usando Silverlight 5 toolkit e avendo XamlParseException quando si utilizza il controllo toolkit BusyIndicator in Expression Blend per SL 5, tutte le soluzioni di cui sopra non hanno aiutato, ma ho trovato un'altra soluzione, la sua piuttosto sporca, ma mi permette di fare il lavoro BusyIndecator in Expression blend,

  1. derivare dal controllo

    public class BusyIndicatorEx : BusyIndicator
    {
        public BusyIndicatorEx()
        {
            this.DefaultStyleKey = typeof(BusyIndicatorEx);
        } 
    }
    
  2. creare stile per controllo derivato (basta copiare lo stile dal codice sorgente BusyIndicator a temi / generic.xaml, e il tipo di cambiamento di destinazione per local:BusyIndicatorEx)

Ho avuto lo stesso problema che è stato risolto con l'introduzione di un riferimento fittizio in codice dietro al pannello Wrap.

So che è un po 'C ++ y, ma posso immaginare che è perché abbiamo riferimento indiretto per avvolgere pannello all'interno di un modello e non sulla pagina di livello superiore in modo che il caricatore non so cosa da caricare sul inizializzazione. Mi piace molto a capire il motivo esatto, però.

Ho appena fatto riferimento System.Windows.Controls.Toolkit e presento seguente membro in codice dietro:

System.Windows.Controls.WrapPanel _dummy;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top