2011-11-10 13 views
5

Sto riscontrando un problema di associazione dati (una domanda separata) e, normalmente, quando eseguo il codice, posso utilizzare il debugger per eseguire il passaggio e raggiungere i punti di interruzione. Quello che probabilmente è un problema semplice mi ha portato tutto il giorno, senza alcuna risoluzione (diventando molto frustrato ora), perché non so come "eseguire il debugger" sui miei binding di dati XAML.Esiste un modo per eseguire correttamente il debugging dei binding di dati WPF?

Se qualcuno potesse spiegare come farlo, sarebbe molto apprezzato.

+0

Grazie per tutte le grandi risposte. Tutti +1. – Sako73

risposta

8

ho idea se VS fornisce un modo semplice per attacchi di debug, ma io di solito uso Snoop per il debug di attacchi

E 'uno strumento in grado di passare attraverso un'applicazione WPF e vi darò un TreeView Visual Albero dell'applicazione . È possibile selezionare un elemento per visualizzarlo DataContext e altre proprietà. Se ci sono errori di binding, la proprietà viene solitamente evidenziata e dirà qual è l'errore. Se l'associazione fallisce perché la proprietà non esiste, di solito posso rintracciare DataContext e capire dove ho sbagliato nella mia associazione.

+0

Snoop è stata una vera manna per me con tutte le piccole sfumature del databinding in WPF. – Tim

+0

Sigh ... abbiamo sofferto per mesi di questi silenziosi fallimenti. Finalmente trovato qualcosa che li rende leggermente più forti. –

1

Aggiungere un convertitore di valori fittizio alla rilegatura. Inserisci un breakpoint nel convertitore di valori. Controllare anche la finestra di output di debug in Visual Studio per eventuali errori di associazione.

1

È possibile ottenere alcune informazioni di base sugli errori di associazione nella finestra di output in Visual Studio. Mostrerà l'errore del percorso dell'espressione di legame e la linea su cui si è verificato l'errore.

3

aggiungere un convertitore fittizio

<local:DebuggerConverter x:Key="DebuggerConverter" /> 

<TextBlock Text={Binding ToSomething, Converter={StaticResource DebuggerConverter}} /> 

il convertitore

public class DebuggerConverter : IValueConverter 
{ 
    #region IValueConverter Members 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    // Set breakpoint here 
    return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    // Set breakpoint here 
    return value; 
    } 

    #endregion 
} 

o usare questo e guardare la finestra di output

<Window xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"> 
    <TextBlock Text={Binding ToSomething, diagnostics:PresentationTraceSources.TraceLevel=High" /> 
</Window> 

speranza che questo aiuta

1

quando ho iniziato con WPF, questo è il problema principale che ho affrontato per eseguire il debug dei miei binding. Ogni volta che si guarda la finestra di output e si cerca la rilegatura sembra complicato per applicazioni molto grandi. Poi mi sono imbattuto in questo ottimo articolo con comprensione dettagliata delle Associazioni - http://bea.stollnitz.com/blog/index.php?s=presentationtrace

Speriamo che questo potrebbe aiutare anche voi ... :)

Problemi correlati