Fragensteller
Anzeige aktualisiert nicht

Frage
-
Hallo zusammen,
ich bastel an einer Kalender app. Eine Klasse erstellt den Monat über MainViewModel und ItemViewModel gelangen die werte die das Tagesdatum darstellen an TextBlöcke eines Pivots. Nun möchte ich per Auswahl auch den angezeigten Monat ändern können. Das funktioniert "intern" auch, die Klasse Monat wird mit den neuen Daten des gewählten Monats gefüllt. Aber TextBlöcke bekommen davon scheinbar nichts mit, obwohl im ItemViewModel NotifyPropertyChanged feuert. Was fehlt noch, damit auch die Anzeige aktualisiert wird? Vielen Dank schon mal für die Hilfe!
br
Alle Antworten
-
Hallo brown78,
Kannst Du uns Dein WPF Code zeigen? Hast Du NotifyOnTargetUpdate auf True gesetzt?
Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Bearbeitet Ionut DumaModerator Montag, 3. Februar 2014 09:56
-
Hallo lonut,
NotifyOnTargetUpdate ist mir gar nicht bekannt. Wo kann sollte ich das setzen?
Das ist im ItemViewModel:
public string Month { get { return _month; } set { if (value != _month) { _month = value; NotifyPropertyChanged("Month"); } } }
Das im MainViewModel:
public void LoadData() { // Beispieldaten. Durch echte Daten ersetzen this.Items.Add(new ItemViewModel() { DayOfWeek = new CalendarConverter(DateTime.Now.DayOfWeek).Day, CalendarWeek = (CalendarUtils.GetCalendarWeek(DateTime.Now).Week), Month = Convert.ToString(CalendarUtils.GetMonth(DateTime.Now)), DayFullDate = new CalendarConverter(DateTime.Now).DayFullDate, Weeks = new Month(DateTime.Now.Month, DateTime.Now.Year), IndexOfDay= DayPosition.IndexOfDay }); this.IsDataLoaded = true; }
Das ist ein Ausschnitt aus der Klasse für den Monat:
public Week Week1 { get { return _week1; } set { RaisePropertyChanging("Week1"); _week1 = value; RaisePropertyChanged("Week1"); } }
Das ist in der Klasse Week:
public string So { get { return _so; } set { RaisePropertyChanging("So"); _so = value; RaisePropertyChanged("So"); } }
Und damit erstelle ich einen neuen Monat:
Month m = new Month(month, year);
Die Klasse Monat erstellt neue Week Objekte, die Klasse Weeks füllt die Wochen mit dem jeweiligen Datum, einem Brush der entweder für Tage des Vor/Nachmonats oder des heutigen Tages unterschiedlich ist. Ebenso ist Fontweight für "heute" anders.
br
-
Hallo brown78,
Ich meine so etwas
<TextBlock Text="{Binding Path=YourProperty, NotifyOnTargetUpdated=True}" TargetUpdated="OnTargetUpdated"/>
Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hi,
also das xaml zu meinem TextBlock sieht momentan so aus (gekürzt):
<TextBlock Text="{Binding Items[0].Weeks.Week1.So}"/>
Wie das mit Path funktioniert hab ich noch nicht ausprobiert... Momentan erscheint NotifyOnTargetUpdated jedenfalls nicht in der Auswahl, tippe ich es trotzdem wird die "Eigenschaft NotifyOnTargetUpdated nicht erkannt". Wenn ich mir die Binding Properties für Silverlight so anschaue, ist NotifyOnTargetUpdated gar nicht dabei. Meine App ist übrigens eine Windows Phone 8 App
Grüße und Danke schon mal :)
br
- Bearbeitet brown78 Donnerstag, 6. Februar 2014 19:43