Errore del percorso di BindingExpression: proprietà non trovata su ‘object’

Ho cercato per ore su questo errore che appare nella finestra di output. Sono abbastanza nuovo per i binding in WPF, quindi sono sicuro che ci sia qualcosa che mi manca.

Testo completo dell’errore (ce n’è uno per ogni percorso di collegamento, tutto simile a questo):

Errore System.Windows.Data: 39: Errore percorso BindingExpression: proprietà ‘TestItem’ non trovata su ‘object’ ” String ‘(HashCode = -842352750)’. BindingExpression: Path = TestItem; DataItem = ‘String’ (HashCode = -842352750); l’elemento target è ‘TextBlock’ (Name = ”); la proprietà di destinazione è ‘Testo’ (digita ‘String’)

EDIT: Tutto sembra funzionare come dovrebbe, ma ottengo questi errori nella finestra di output.

XAML:

                               </ListView  

Codice dietro:

 public class MyData : INotifyPropertyChanged { private string _testitem = ""; private string _information = ""; private string _passfail = ""; public string TestItem { get { return _testitem; } set { _testitem = value; OnPropertyChanged("TestItem"); } } public string Information { get { return _information; } set { _information = value; OnPropertyChanged("Information"); } } public string PassFail { get { return _passfail; } set { _passfail = value; OnPropertyChanged("PassFail"); } } public string Text { get; set; } 

Non si desidera impostare DataContext su UserControl. Invece, si desidera impostarlo nell’ambito di UserControl.

Di solito lo fai nel costruttore di UserControl. Di solito aggiungo una riga come questa:

 this.RootElement.DataContext = myData; 

Dove RootElement è il primo elemento secondario (il Contenuto) del tuo UserControl (di solito un pannello come Grid o StackPanel).

Nel tuo caso sarebbe:

this.lsvwOutput.DataContext = FindResource("myDataSource") ;

E si assicura che sia dopo la chiamata InitializeComponent ().

È solo una questione di scoping. Si imposta il datacontext sul pannello radice di usercontrol. Questa è una parte davvero non ovvia di WPF.

AGGIORNAMENTO: Come indicato da Markus in seguito, nel caso di un listview, si desidera impostare una matrice di dati, non solo un punto dati. Prendi questo in considerazione quando imposti DataContext nel tuo costruttore.

sembra che tu leghi gli elementi di visualizzazione degli oggetti a un object, non a un array. tutto funziona visivamente? o non vedi niente?

EDIT : cosa succede se scrivi invece di:

  

Questo:

    

o qualsiasi definizione di collezione allo stesso modo