2010-04-28 19 views
25

Siamo appena passati a vs2010 da vs2008 ei nostri progetti vengono compilati ed eseguiti senza problemi. Tuttavia, il progettista xaml ha alcuni errori. Ecco uno degli errori sperare che qualcuno possa fornire una soluzione.VS2010 Markup personalizzato Estensione

Abbiamo un MarkupExtension personalizzato e lo usiamo in xaml per ottenere determinate risorse. Qualcosa di simile a questo:

<Button Style="{l:GetResource Key=MyButtonStyle}" />

So che possiamo usare StaticResource o DynamicResource. Tuttavia, abbiamo i nostri motivi per utilizzare il markupextension personalizzato.

Il messaggio di errore dal progettista è:

'GetResourceExtension' non è valida per Setter.Value. I soli tipi di MarkupExtension supportati da sono DynamicResourceExtension e BindingBase o tipi derivati.

La mia domanda è che il codice funziona bene in vs2008, e funziona anche bene nel 2010, come far funzionare il designer 2010?

+1

Hai provato questo in Blend? Mi chiedo se Cyder (il Designer XAML VS20120) semplicemente non sia in grado di gestire le estensioni di markup personalizzate. Non mi sorprende dal momento che è abbastanza sensibile, anche se questo è fondamentale. Questo errore fa crashare il progettista o funziona e viene visualizzato solo come un errore? –

risposta

1

Ho scritto alcune estensioni di markup e sebbene il codice venga eseguito, ricevo Xaml Error come quello che si ottiene sempre. Supponendo che tu abbia un codice valido, ho trovato che l'unico modo per sbarazzarsi degli errori era tramite l'opzione di ricostruzione e poi l'esecuzione dell'app.

Ovviamente il problema è che se si cambia di nuovo o si sposta, gli errori sembrano tornare. La mia ipotesi è che la compilazione statica non possa risolvere completamente ciò che sta facendo il tuo markup e sta lanciando l'errore sulla base di questo.

Nel mio caso stavo scrivendo un raccoglitore di metodi e poiché l'oggetto era nullo fino al runtime ho finito per dover usare il nuovo Object(); e lo scambia a runtime. È hacky ma l'errore di compilazione mi stava facendo impazzire.

Il parser xaml sembra essere migliore nel 2012 ma anche allora ci sono gli errori dispari.

Problemi correlati