Entwickler-Ecke
WPF / Silverlight - Binding aktualisieren schlägt fehlt.
Sestriel - Fr 03.07.15 11:36
Titel: Binding aktualisieren schlägt fehlt.
Guten Morgen,
immer noch stehe ich auf Kriegsfuß mit dem DataBinding bzw allgemein XAML & binnicht in der Lage, meinen TextBlock über das Binding zu updaten.
Ich habe also
string test = "Hallo"; und
XML-Daten
1:
| <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Height="269" Margin="5,5,0,0" TextWrapping="Wrap" Text="{Binding test, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="1229"/> |
als textBlock.
"Hallo" wird in diesem fall auch richtig angezeigt, jedoch wird beim drücken eines Buttons der Inhalt von "test" geändert, was müsste ich an meinem Code ändern, damit mein Textblock geupdated wird?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| private string _test = "unknown"; public string test { get { return _test; } set { _test = value; RaisePropertyChanged(() => test); } } |
Th69 - Fr 03.07.15 12:32
Hallo,
wenn du beim Button-Click die Eigenschaft test änderst, dann sollte automatisch der TextBlock aktualisiert werden (dein Binding dazu sieht richtig aus).
Zeig mal deinen Code dazu.
PS: Eigenschaften sollten mit einem Großbuchstaben (wie Methoden) beginnen: Test
Sestriel - Fr 03.07.15 12:53
Welchen Code genau benötigst du ?
Laut dem debugging ist alles richtig, er schreibt in den string auch die richtigen Zeichen, habe ich bereits mit einer MessageBox getestet, lediglich das Binding will nicht updaten.
Mein code, der hier vorhanden ist, ist leicht abgewandelt, da ich von dem Code eigentlich nichts veröffentlichen darf, deshalb auch die Variablennamen.
Mein Code an sich läuft fehlerfrei, lediglich das Binding macht Faxen, wie eigentlich immer..ständig spinnt der XAML-Mist rum.
Moderiert von Th69: Full-Quote entfernt.
Ralf Jansen - Fr 03.07.15 13:00
Dann versuchen wir es ein wenig mit manuellem Remote Debugging ;)
- Beim debuggen hast du gesehen das du bei RaisePropertyChanged(() => test) ankommst?
- du hast auch gesehen das der richtige Propertyname "test" in der RaisePropertyChanged Methode ankommt?
- du hast gesehen das der PropertyName auch in den PropertyChangedEventArgs aufgenommen wurde
- du hast gesehen das in der Methode der OnPropertyChanged Event delegat dann auch ausgeführt wird
- du siehst das nach dem Event der getter deiner Property aufgerufen wird?
Sestriel - Fr 03.07.15 13:00
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| private DelegateCommand _SaveXMLCommand; public DelegateCommand SaveXMLCommand { get { return _SaveXMLCommand; } } public bool SaveXMLCommand_CanExecute(object argument) { return true; } private void SaveXMLCommand_Execute(object obj) { try { test = xel.ToString(); MessageBox.Show(test); } catch { MessageBox.Show("Fehler - ..."); } } |
Dies wäre mein Command, was ich auf den Button gelegt habe, hoffe das ist noch ok, dass ich den Code hochgeladen habe.
@Ralf Jansen.
-Ja
-_test=value; wird ausgeführt, in value stehen die Daten, die ich richtigerweise übergeben möchte.
-Hier könnte das Problem evtl. liegen, ich muss aber zugeben, ich bin mir nicht sicher was damit gemeint ist, da ich noch nicht allzuviel Erfahrung mit MVVM bzw allgemein Wpf habe.
-Hier stehe ich ebenfalls leicht auf dem Schlauch.
-Trifft nicht zu, mein
get{ return _test } wird nicht ausgeführt bzw angesprochen im debugging. Edit: Wird tatsächlich nicht angesprochen
Moderiert von Th69: C#-Tags hinzugefügt
Ralf Jansen - Fr 03.07.15 13:16
Zeig zur Sicherheit mal deine RaisePropertyChanged Methode
Sestriel - Fr 03.07.15 13:22
Ralf Jansen hat folgendes geschrieben : |
Zeig zur Sicherheit mal deine RaisePropertyChanged Methode |
Darauf habe ich leider keinen Zugriff, selbst wenn ich könnte dürfte ich nicht, aber mit einer Sicherheit von 99,99% liegt dort nicht der Fehler, da diese Seit 2014 nicht verändert wurde und jeder hier damit arbeitet.
Btw, muss meine Aussage korrigieren, mein getter wird doch nicht aufgerufen, lag an der noch vorhandenen MessageBox.
Ralf Jansen - Fr 03.07.15 13:26
Dann kann ich nur noch Vermutungen anstellen. Bezogen auf dein Problem im letzten Thread. Die test Property befindet sich auch im ViewModel? Und nicht im Model?
Sestriel - Fr 03.07.15 13:29
Ralf Jansen hat folgendes geschrieben : |
Dann kann ich nur noch Vermutungen anstellen. Bezogen auf dein Problem im letzten Thread. Die test Property befindet sich auch im ViewModel? Und nicht im Model? |
Ja, alles was hier abgerufen wird befindet sich in der VM - Ich werde mein Programm mal an einem anderen Rechner laufen lassen, da an diesem allgemein XAML ziemlich "anders" läuft als auf allen anderen Rechnern.
Edit: Fehler nun doch gefunden, jenes Problem war ein gesetzter DataContext in der CodeBehind (Wie auch immer der dahin kam?) Welcher eine neue Instanz der ViewModel erzeugte.
Vielen Dank an alle für die Hilfe :)
MfG
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!