WPF / XAML-Eigenschaft nicht in 'Objekt' gefunden

7

Ich verwende einen BackgroundWorker in einer neuen WPF-App und ich muss den Fortschritt melden / die Benutzeroberfläche aktualisieren, während sie im Hintergrund arbeitet.

Ich mache das schon lange in Windows Forms Apps. Ich habe gerade alles für WPF neu geschrieben und es gibt mir ein bisschen Kopfschmerzen.

Es wirft zur Laufzeit den folgenden Fehler auf:

  

System.Windows.Data Fehler: 40: BindingExpression path error: 'Sender'   Eigenschaft nicht gefunden auf 'Objekt' '' Char '(HashCode = 5046349)'.   BindingExpression: Pfad = Absender; DataItem = 'Char' (HashCode = 5046349);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Typ 'String') System.Windows.Data Fehler: 40: BindingExpression path   Fehler: 'Betreff'-Eigenschaft nicht gefunden auf' Objekt '' 'Char'   (HashCode = 5046349) '. BindingExpression: Pfad = Betreff; DataItem = 'Char'   (HashCode = 5046349); Zielelement ist 'TextBlock' (Name = ''); Ziel   Eigenschaft ist 'Text' (Typ 'String') System.Windows.Data Error: 40:   BindingExpression path error: Eigenschaft 'Sender' wurde nicht in 'Objekt' gefunden   "Char" (HashCode = 6619237). BindingExpression: Pfad = Absender;   DataItem = 'Char' (HashCode = 6619237); Zielelement ist 'TextBlock'   (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String')   System.Windows.Data Error: 40: BindingExpression-Pfadfehler:   "Betreff" -Eigenschaft nicht auf "Objekt" "" Char "(HashCode = 6619237) gefunden".   BindingExpression: Pfad = Betreff; DataItem = 'Char' (HashCode = 6619237);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Typ 'String') System.Windows.Data Fehler: 40: BindingExpression path   Fehler: Eigenschaft 'Absender' wurde nicht in 'Objekt' gefunden '' Char '   (HashCode = 7536755) '. BindingExpression: Pfad = Absender; DataItem = 'Char'   (HashCode = 7536755); Zielelement ist 'TextBlock' (Name = ''); Ziel   Eigenschaft ist 'Text' (Typ 'String') System.Windows.Data Error: 40:   BindingExpression path error: Eigenschaft 'Subject' nicht in 'Objekt' gefunden   '' Char '(HashCode = 7536755)'. BindingExpression: Pfad = Betreff;   DataItem = 'Char' (HashCode = 7536755); Zielelement ist 'TextBlock'   (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String')   System.Windows.Data Fehler: 40: BindingExpression path error: 'Sender'   Eigenschaft nicht gefunden auf 'Objekt' '' Char '(HashCode = 7536755)'.   BindingExpression: Pfad = Absender; DataItem = 'Char' (HashCode = 7536755);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Typ 'String') System.Windows.Data Fehler: 40: BindingExpression path   Fehler: 'Betreff'-Eigenschaft nicht gefunden auf' Objekt '' 'Char'   (HashCode = 7536755) '. BindingExpression: Pfad = Betreff; DataItem = 'Char'   (HashCode = 7536755); Zielelement ist 'TextBlock' (Name = ''); Ziel   Eigenschaft ist 'Text' (Typ 'String') System.Windows.Data Error: 40:   BindingExpression path error: Eigenschaft 'Sender' wurde nicht in 'Objekt' gefunden   '' Char '(HashCode = 6357089)'. BindingExpression: Pfad = Absender;   DataItem = 'Char' (HashCode = 6357089); Zielelement ist 'TextBlock'   (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String')   System.Windows.Data Error: 40: BindingExpression-Pfadfehler:   'Betreff'-Eigenschaft nicht gefunden auf' Objekt '' 'Char' (HashCode = 6357089) '.   BindingExpression: Pfad = Betreff; DataItem = 'Char' (HashCode = 6357089);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Typ 'String') System.Windows.Data Fehler: 40: BindingExpression path   Fehler: Eigenschaft 'Absender' wurde nicht in 'Objekt' gefunden '' Char '   (HashCode = 6750311) '. BindingExpression: Pfad = Absender; DataItem = 'Char'   (HashCode = 6750311); Zielelement ist 'TextBlock' (Name = ''); Ziel   Eigenschaft ist 'Text' (Typ 'String') System.Windows.Data Error: 40:   BindingExpression path error: Eigenschaft 'Subject' nicht in 'Objekt' gefunden   '' Char '(HashCode = 6750311)'. BindingExpression: Pfad = Betreff;   DataItem = 'Char' (HashCode = 6750311); Zielelement ist 'TextBlock'   (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String')   System.Windows.Data Fehler: 40: BindingExpression path error: 'Sender'   Eigenschaft nicht gefunden auf 'Objekt' '' Char '(HashCode = 6619237)'.   BindingExpression: Pfad = Absender; DataItem = 'Char' (HashCode = 6619237);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Typ 'String') System.Windows.Data Fehler: 40: BindingExpression path   Fehler: 'Betreff'-Eigenschaft nicht gefunden auf' Objekt '' 'Char'   (HashCode = 6619237) '. BindingExpression: Pfad = Betreff; DataItem = 'Char'   (HashCode = 6619237); Zielelement ist 'TextBlock' (Name = ''); Ziel   Eigenschaft ist 'Text' (Typ 'String')

Ich habe keine Ahnung, was das eigentlich bedeutet. Ein paar Google-Suchen haben nichts ergeben, was geholfen hat.

Ich werde auch darauf hinweisen, dass der Code tatsächlich alle Mails abruft, wenn ich den BGWorker in WPF nicht verwende. Aber es hört nur auf zu arbeiten und hört auf zu binden, wenn ich den Hintergrundarbeiter benutze. Ich habe keine Idee warum. Der exakt gleiche Code funktioniert in WinForms für BGWorker.

Was bedeutet dieser Fehler wirklich und was kann ich tun, um ihn los zu werden?

Code-Behind:

%Vor%

XAML:

%Vor%     
jay_t55 03.07.2014, 15:56
quelle

3 Antworten

33

Das ist ein DataBinding-Fehler

Der einfachste Weg, diese zu lesen, ist es, sie durch die Doppelpunkte / Semikolons aufzubrechen und rückwärts zu lesen

  

System.Windows.Data Fehler: 40: BindingExpression path error: 'Sender'   Eigenschaft nicht gefunden auf 'Objekt' '' Char '(HashCode = 6619237)'.   BindingExpression: Pfad = Absender; DataItem = 'Char' (HashCode = 6619237);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Geben Sie 'String' ein)

  1. Zieleigenschaft ist 'Text' (Typ 'String')
  2. Zielelement ist 'TextBlock' (Name = '');
  3. BindingExpression: Pfad = Absender;
  4. DataItem = 'Char' (HashCode = 6619237);
  5. Die Eigenschaft 'Absender' wurde nicht in 'Objekt' '' Char 'gefunden (HashCode = 6619237)'.
  6. BindingExpression-Pfadfehler:
  7. System.Windows.Data Fehler: 40:

1 sagt Ihnen, dass es eine Text -Eigenschaft gibt, die den Fehler verursacht

2 sagt Ihnen, dass sich die Text-Eigenschaft auf einem <TextBlock> -Element

befindet

3 sagt Ihnen, dass der verbindliche Express das Problem verursacht {Binding Path=Sender}

ist

4 teilt Ihnen mit, dass das DataItem / DataContext hinter dem Element <TextBlock> ein Element des Datentyps Char

ist

5 sagt Ihnen das eigentliche Problem: Es gibt keine Eigenschaft namens Sender für das Objekt vom Typ Char

6 sagt Ihnen nur, dass es sich um einen verbindlichen Fehler handelt

7 Ich habe keine Ahnung, was es bedeutet

Da ich sehe, dass Sie eine öffentliche Eigenschaft namens Sender in Ihrer Message -Klasse haben und klar ist, dass Message nicht Char ist, ist es offensichtlich, dass Ihre DataContext für jedes Element falsch ist.

Da es auf Char gesetzt ist, ist die wahrscheinlichste Ursache, dass Sie an eine Zeichenfolge gebunden sind, und DataContext für jedes Element ist ein Zeichen in dieser Zeichenfolge.

Und tatsächlich, ItemsSource="{Binding Source=Messages} bedeutet, dass Sie die Source -Eigenschaft der Bindung von der aktuellen DataContext in eine string ändern. Und Zeichenketten sind nur Zeichen-Arrays, das heißt, Sie binden an das Zeichen-Array { M, e, s, s, a, g, e, s }

Wenn Sie die Eigenschaft Source in die Eigenschaft Path ändern, wird stattdessen DataContext.Messages korrekt gelesen und sollte funktionieren.

%Vor%

(Das Wort Path ist hier optional, da die Bindung annimmt, dass es sich um den Wert für die Path -Eigenschaft handelt, wenn Sie keinen Eigenschaftsnamen angeben)

Als Nebenbemerkung sehe ich nicht, dass Sie Ihre DataContext irgendwo auf dem Formular festlegen, und ich sehe auch keine öffentliche Messages -Eigenschaft.

Der MainWindow -Konstruktor sollte wahrscheinlich eine Codezeile haben, die wie folgt aussieht, um DataContext auf sich selbst zu setzen:

%Vor%

Und Sie benötigen wahrscheinlich eine öffentliche Eigenschaft für Ihr ObservableCollection<Message> messages , damit die ListView -Bindung es finden kann:

%Vor%

Ich bin mir nicht sicher, ob diese nur übersehen wurden oder ob Sie nicht wussten, dass Sie sie brauchten.

Oh, und wenn Sie vorhaben, diese gebundenen Eigenschaften zu ändern und die Benutzeroberfläche automatisch aktualisieren zu lassen, sollten Sie INotifyPropertyChanged auch:)

Und da ich hier im Tutorial-Modus bin, dachte ich, ich sollte auch auf diese Antwort verlinken:

  

Übergang von Windows Forms zu WPF

>

Ich würde sehr empfehlen, es durchzulesen (und die verknüpften Artikel), wenn Sie neu bei der Funktionsweise von WPF sind und von Winforms zu WPF wechseln. Was es klingt wie du bist:)

    
Rachel 03.07.2014, 16:08
quelle
4
___ qstnhdr ___ WPF / XAML-Eigenschaft nicht in 'Objekt' gefunden ___ answer24558852 ___

Wenn Sie eine Eigenschaft Sender verwenden, wird davon ausgegangen, dass Sie eine TextBlock.Text übergeben. WPF wird standardmäßig die Dinge als den Namen ihres Typs anzeigen, wenn sie nichts anderes finden können, was mit etwas zu tun ist. Da string ein object (von Zeichen) ist, übergibt das Listenelement den Namen des gebundenen Objekttyps an object , da es die einzige "vernünftige" Sache ist, die es ausführen kann. Und da der Char-Typ offensichtlich keine Sender- und Subjekt-Eigenschaften hat, geht Ihr Code boom .

Vergleichen Sie als Beweis die Ausgabe des unteren Codes und die Hashcodes in Ihren Fehlermeldungen.

%Vor%

Verwenden Sie anstelle von Sender einfach das Stackpanel mit der gleichen Datenquelle wie die Nachricht und löschen Sie die einschließenden Steuerelemente:

%Vor%     
___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ answer2458595 ___

Im Gegensatz zu vielen .NET-Fehlern bedeuten diese genau was sie sagen ... alles, was Sie tun müssen, ist sie zu lesen. Verwenden Sie dieses als ein Beispiel:

  

System.Windows.Data Fehler: 40: BindingExpression path error: 'Sender'-Eigenschaft nicht gefunden auf' Objekt '' 'Char' (HashCode = 5046349) '. BindingExpression: Pfad = Absender; DataItem = 'Char' (HashCode = 5046349); Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String')

Irgendwo in Ihrem XAML versuchen Sie, eine Eigenschaft mit dem Namen TextBlock an eine Binding Eigenschaft zu binden. Diese Information steht alles in Ihrem Fehler. Es wird jedoch fortgesetzt, dass das Objekt, das Daten gebunden ist, vom Typ object ist und dass die Klasse Sender keine Eigenschaft namens object ... daher ... Fehler hat.

Um es zu beheben, finden Sie die Binding und die ItemTemplate und vertauschen die %code% mit einer Instanz Ihrer Klasse, die die Eigenschaft %code% hat, oder alternativ verwenden Eine Eigenschaft zum Binden an ist , die in der Klasse %code% definiert ist.

Nach der Anzahl dieser Fehler, die Sie haben, muss ich annehmen, dass sie von einem %code% in einem %code% verursacht werden, z. Sie haben den gleichen Fehler, der durch jedes Element Ihrer Sammlung verursacht wird.

    
___ answer24558644 ___

Das ist ein DataBinding-Fehler

Der einfachste Weg, diese zu lesen, ist es, sie durch die Doppelpunkte / Semikolons aufzubrechen und rückwärts zu lesen

  

System.Windows.Data Fehler: 40: BindingExpression path error: 'Sender'   Eigenschaft nicht gefunden auf 'Objekt' '' Char '(HashCode = 6619237)'.   BindingExpression: Pfad = Absender; DataItem = 'Char' (HashCode = 6619237);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Geben Sie 'String' ein)

  1. Zieleigenschaft ist 'Text' (Typ 'String')
  2. Zielelement ist 'TextBlock' (Name = '');
  3. BindingExpression: Pfad = Absender;
  4. DataItem = 'Char' (HashCode = 6619237);
  5. Die Eigenschaft 'Absender' wurde nicht in 'Objekt' '' Char 'gefunden (HashCode = 6619237)'.
  6. BindingExpression-Pfadfehler:
  7. System.Windows.Data Fehler: 40:

1 sagt Ihnen, dass es eine %code% -Eigenschaft gibt, die den Fehler verursacht

2 sagt Ihnen, dass sich die Text-Eigenschaft auf einem %code% -Element

befindet

3 sagt Ihnen, dass der verbindliche Express das Problem verursacht %code%

ist

4 teilt Ihnen mit, dass das DataItem / DataContext hinter dem Element %code% ein Element des Datentyps %code%

ist

5 sagt Ihnen das eigentliche Problem: Es gibt keine Eigenschaft namens %code% für das Objekt vom Typ %code%

6 sagt Ihnen nur, dass es sich um einen verbindlichen Fehler handelt

7 Ich habe keine Ahnung, was es bedeutet

Da ich sehe, dass Sie eine öffentliche Eigenschaft namens %code% in Ihrer %code% -Klasse haben und klar ist, dass %code% nicht %code% ist, ist es offensichtlich, dass Ihre %code% für jedes Element falsch ist.

Da es auf %code% gesetzt ist, ist die wahrscheinlichste Ursache, dass Sie an eine Zeichenfolge gebunden sind, und %code% für jedes Element ist ein Zeichen in dieser Zeichenfolge.

Und tatsächlich, %code% bedeutet, dass Sie die %code% -Eigenschaft der Bindung von der aktuellen %code% in eine %code% ändern. Und Zeichenketten sind nur Zeichen-Arrays, das heißt, Sie binden an das Zeichen-Array %code%

Wenn Sie die Eigenschaft %code% in die Eigenschaft %code% ändern, wird stattdessen %code% korrekt gelesen und sollte funktionieren.

%Vor%

(Das Wort %code% ist hier optional, da die Bindung annimmt, dass es sich um den Wert für die %code% -Eigenschaft handelt, wenn Sie keinen Eigenschaftsnamen angeben)

Als Nebenbemerkung sehe ich nicht, dass Sie Ihre %code% irgendwo auf dem Formular festlegen, und ich sehe auch keine öffentliche %code% -Eigenschaft.

Der %code% -Konstruktor sollte wahrscheinlich eine Codezeile haben, die wie folgt aussieht, um %code% auf sich selbst zu setzen:

%Vor%

Und Sie benötigen wahrscheinlich eine öffentliche Eigenschaft für Ihr %code% , damit die %code% -Bindung es finden kann:

%Vor%

Ich bin mir nicht sicher, ob diese nur übersehen wurden oder ob Sie nicht wussten, dass Sie sie brauchten.

Oh, und wenn Sie vorhaben, diese gebundenen Eigenschaften zu ändern und die Benutzeroberfläche automatisch aktualisieren zu lassen, sollten Sie INotifyPropertyChanged auch:)

Und da ich hier im Tutorial-Modus bin, dachte ich, ich sollte auch auf diese Antwort verlinken:

  

Übergang von Windows Forms zu WPF

>

Ich würde sehr empfehlen, es durchzulesen (und die verknüpften Artikel), wenn Sie neu bei der Funktionsweise von WPF sind und von Winforms zu WPF wechseln. Was es klingt wie du bist:)

    
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ tag123xaml ___ Die Extensible Application Markup Language (XAML) ist eine deklarative XML-basierte Sprache, die zum Initialisieren strukturierter Werte und Objekte in verschiedenen Frameworks verwendet wird. Wenn eine Frage über die Verwendung von XAML mit einem bestimmten Framework ist, sollte auch ein Tag für das Framework bereitgestellt werden, z. [wpf] (Windows Presentation Foundation), [Silverlight], [Windows-Phone], [Windows-Store-Apps] (Windows 8 Store-Apps), [win-universal-app], [xamarin.forms] oder [workflow- Stiftung] ___ tag123wpf ___ Windows Presentation Foundation oder WPF ist ein Subsystem zum Rendern von Benutzeroberflächen in Windows-basierten Anwendungen. ___ qstntxt ___

Ich verwende einen BackgroundWorker in einer neuen WPF-App und ich muss den Fortschritt melden / die Benutzeroberfläche aktualisieren, während sie im Hintergrund arbeitet.

Ich mache das schon lange in Windows Forms Apps. Ich habe gerade alles für WPF neu geschrieben und es gibt mir ein bisschen Kopfschmerzen.

Es wirft zur Laufzeit den folgenden Fehler auf:

  

System.Windows.Data Fehler: 40: BindingExpression path error: 'Sender'   Eigenschaft nicht gefunden auf 'Objekt' '' Char '(HashCode = 5046349)'.   BindingExpression: Pfad = Absender; DataItem = 'Char' (HashCode = 5046349);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Typ 'String') System.Windows.Data Fehler: 40: BindingExpression path   Fehler: 'Betreff'-Eigenschaft nicht gefunden auf' Objekt '' 'Char'   (HashCode = 5046349) '. BindingExpression: Pfad = Betreff; DataItem = 'Char'   (HashCode = 5046349); Zielelement ist 'TextBlock' (Name = ''); Ziel   Eigenschaft ist 'Text' (Typ 'String') System.Windows.Data Error: 40:   BindingExpression path error: Eigenschaft 'Sender' wurde nicht in 'Objekt' gefunden   "Char" (HashCode = 6619237). BindingExpression: Pfad = Absender;   DataItem = 'Char' (HashCode = 6619237); Zielelement ist 'TextBlock'   (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String')   System.Windows.Data Error: 40: BindingExpression-Pfadfehler:   "Betreff" -Eigenschaft nicht auf "Objekt" "" Char "(HashCode = 6619237) gefunden".   BindingExpression: Pfad = Betreff; DataItem = 'Char' (HashCode = 6619237);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Typ 'String') System.Windows.Data Fehler: 40: BindingExpression path   Fehler: Eigenschaft 'Absender' wurde nicht in 'Objekt' gefunden '' Char '   (HashCode = 7536755) '. BindingExpression: Pfad = Absender; DataItem = 'Char'   (HashCode = 7536755); Zielelement ist 'TextBlock' (Name = ''); Ziel   Eigenschaft ist 'Text' (Typ 'String') System.Windows.Data Error: 40:   BindingExpression path error: Eigenschaft 'Subject' nicht in 'Objekt' gefunden   '' Char '(HashCode = 7536755)'. BindingExpression: Pfad = Betreff;   DataItem = 'Char' (HashCode = 7536755); Zielelement ist 'TextBlock'   (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String')   System.Windows.Data Fehler: 40: BindingExpression path error: 'Sender'   Eigenschaft nicht gefunden auf 'Objekt' '' Char '(HashCode = 7536755)'.   BindingExpression: Pfad = Absender; DataItem = 'Char' (HashCode = 7536755);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Typ 'String') System.Windows.Data Fehler: 40: BindingExpression path   Fehler: 'Betreff'-Eigenschaft nicht gefunden auf' Objekt '' 'Char'   (HashCode = 7536755) '. BindingExpression: Pfad = Betreff; DataItem = 'Char'   (HashCode = 7536755); Zielelement ist 'TextBlock' (Name = ''); Ziel   Eigenschaft ist 'Text' (Typ 'String') System.Windows.Data Error: 40:   BindingExpression path error: Eigenschaft 'Sender' wurde nicht in 'Objekt' gefunden   '' Char '(HashCode = 6357089)'. BindingExpression: Pfad = Absender;   DataItem = 'Char' (HashCode = 6357089); Zielelement ist 'TextBlock'   (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String')   System.Windows.Data Error: 40: BindingExpression-Pfadfehler:   'Betreff'-Eigenschaft nicht gefunden auf' Objekt '' 'Char' (HashCode = 6357089) '.   BindingExpression: Pfad = Betreff; DataItem = 'Char' (HashCode = 6357089);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Typ 'String') System.Windows.Data Fehler: 40: BindingExpression path   Fehler: Eigenschaft 'Absender' wurde nicht in 'Objekt' gefunden '' Char '   (HashCode = 6750311) '. BindingExpression: Pfad = Absender; DataItem = 'Char'   (HashCode = 6750311); Zielelement ist 'TextBlock' (Name = ''); Ziel   Eigenschaft ist 'Text' (Typ 'String') System.Windows.Data Error: 40:   BindingExpression path error: Eigenschaft 'Subject' nicht in 'Objekt' gefunden   '' Char '(HashCode = 6750311)'. BindingExpression: Pfad = Betreff;   DataItem = 'Char' (HashCode = 6750311); Zielelement ist 'TextBlock'   (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String')   System.Windows.Data Fehler: 40: BindingExpression path error: 'Sender'   Eigenschaft nicht gefunden auf 'Objekt' '' Char '(HashCode = 6619237)'.   BindingExpression: Pfad = Absender; DataItem = 'Char' (HashCode = 6619237);   Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text'   (Typ 'String') System.Windows.Data Fehler: 40: BindingExpression path   Fehler: 'Betreff'-Eigenschaft nicht gefunden auf' Objekt '' 'Char'   (HashCode = 6619237) '. BindingExpression: Pfad = Betreff; DataItem = 'Char'   (HashCode = 6619237); Zielelement ist 'TextBlock' (Name = ''); Ziel   Eigenschaft ist 'Text' (Typ 'String')

Ich habe keine Ahnung, was das eigentlich bedeutet. Ein paar Google-Suchen haben nichts ergeben, was geholfen hat.

Ich werde auch darauf hinweisen, dass der Code tatsächlich alle Mails abruft, wenn ich den BGWorker in WPF nicht verwende. Aber es hört nur auf zu arbeiten und hört auf zu binden, wenn ich den Hintergrundarbeiter benutze. Ich habe keine Idee warum. Der exakt gleiche Code funktioniert in WinForms für BGWorker.

Was bedeutet dieser Fehler wirklich und was kann ich tun, um ihn los zu werden?

Code-Behind:

%Vor%

XAML:

%Vor%     
___
Sheridan 03.07.2014 16:07
quelle
2

Wenn Sie eine Eigenschaft ItemsSource verwenden, wird davon ausgegangen, dass Sie eine IEnumerable übergeben. WPF wird standardmäßig die Dinge als den Namen ihres Typs anzeigen, wenn sie nichts anderes finden können, was mit etwas zu tun ist. Da string ein IEnumerable (von Zeichen) ist, übergibt das Listenelement den Namen des gebundenen Objekttyps an ItemTemplate , da es die einzige "vernünftige" Sache ist, die es ausführen kann. Und da der Char-Typ offensichtlich keine Sender- und Subjekt-Eigenschaften hat, geht Ihr Code boom .

Vergleichen Sie als Beweis die Ausgabe des unteren Codes und die Hashcodes in Ihren Fehlermeldungen.

%Vor%

Verwenden Sie anstelle von ListView einfach das Stackpanel mit der gleichen Datenquelle wie die Nachricht und löschen Sie die einschließenden Steuerelemente:

%Vor%     
Clever Neologism 03.07.2014 16:20
quelle

Tags und Links