Diskuze: Přepsání dat v kolekci i když zápisu předchází výjimka
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
V konstruktoru predavas instanciu objektu, tu editujes. Ked sa zavrie okno, zmeny uz su v povodnom objekte. Nebude to nahodou tento pripad? To je aktualne jedine, co ma napada.
Diky za odpoved. Nemel by to byt ten pripad, protoze celou osobu mazu a nahrazuji novou. To vse az po vyvolaji vyjimky. Zvlastni taky je, ze nemenim puvodni osobu, ale nahrazuji ji a ackoli tedy dojde ke smazani a vlozeni noveho objektu do ObservableColletion, tak kontrolka listBox na zmenu nereaguje.
Pokud osobu vlozim nebo smazu, tak se ta sama kontrolka obnovi, takze binding funguje dobre. A je to navic to same, co delam pri zmene, take smazu a vlozim osobu...
Tak chyba byla v tom, že jsem v XAMLu bindoval TextBox a DatePicker primo na předanou instanci osoby. Tudíž pravděpodobně opravdu docházelo ke změně v objektu a ObservableCollection změnu nepromítla, protože událost vyvolá pouze při změně v kolekci (přidání / vymazání), nikoli při změně uloženého objektu.
Aby mi formulář uprav osobu předvyplnil TextBox a DatePicker jsem nakonec místo bindingu využil přímo konstruktor.
public UpravitOsobaWindow(SpravceOsob spravce, Osoba osoba)
{
InitializeComponent();
this.spravce = spravce;
this.osoba = osoba;
upravJmenoTextBox.Text = osoba.Jmeno;
upravNarozeninyDatePicker.SelectedDate = osoba.Narozeniny;
}
Zobrazeno 5 zpráv z 5.