Autor Beitrag
Sestriel
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 03.07.15 11:36 
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
ausblenden 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?

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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

Für diesen Beitrag haben gedankt: Sestriel
Sestriel Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: 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 user profile iconTh69: Full-Quote entfernt.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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?

Für diesen Beitrag haben gedankt: Sestriel
Sestriel Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 03.07.15 13:00 
ausblenden 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
            {
                //...Hier stehen ein paar Zeilen code, sind aber unwichtig.
                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 user profile iconTh69: C#-Tags hinzugefügt


Zuletzt bearbeitet von Sestriel am Fr 03.07.15 13:23, insgesamt 1-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 03.07.15 13:16 
Zeig zur Sicherheit mal deine RaisePropertyChanged Methode
Sestriel Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 03.07.15 13:22 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 03.07.15 13:29 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
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