Diskuze: WPF - problém se spuštěním validátoru po zobrazení okna/formuláře
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 9 zpráv z 9.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Nějak mi uniká smysl validace při otevření okna. Myslel jsem si, že hodnoty je třeba validovat při ukládání a ne při načítání, nebo proč ta validace tam je?
Jde o to, že zobrazím okno s textboxem do kterého je potřeba zadat číslo (ono tam toho je samozřejmě víc, tohle je jen pro zjednodušení). V textboxu musí být číslo různé od nuly. A validace tam je kvůli tomu, že ve chvíli kdy tam je zadaný nevalidní text, tak se textbox červeně podbarví a zakáže se tlačítko "Uložit". No a problém je v tom že to je nabindované na Int64 který má jako defaultní hodnotu 0. V praxi to tedy vypadá tak, že se otevře okno s textboxem ve kterém je hodnota 0, ale vzhledem k tomu že neproběhla validace, tak to uživatel může uložit (není zakázané tlačítko Uložit ani podbarvaný textbox). Vím že bych to mohl ošetřit např. tak, že bych mohl defaultně zakázat to tlačítko na ukládání, ale to mi nepříjde moc pěkný a navíc by mě zajímalo proč se to takhle chová.
A není jednodušší místo textboxu použít NumericUpDown?
Validace je vázaná na akci - u tebe na TextInput, takže zkus ve Window_loaded dát za datacontext
txtMynumber.Text = "0";
Ono se nejedná jen o čísla a částky, těch validací tam je hromada, např. rodná čísla, emaily, telefonní čísla + nějaké interní speciální označení které musejí odpovídat specifickému formátu atd. Ten příklad s číslem byl jen pro ilustraci.
Aha... A když ti ta validace funguje při tučním zadávání, nestačilo by tu validaci spustit na událost stisku tlačítka (v podstatě jakoby kontrola před uložením)?
Díky, tohle funguje
Ale
stejně by mě zajímalo jestli nejde nějak docílit toho, aby se ten
validátor zavolal automaticky po bindingu.
To by asi stačilo díky 
Problém byl v tom že jsem nemohl přijít na to jak tu validaci spustit
ručně, resp. moc to nefungovalo.
Funguje je mi když to zavolám takhle:
txtMyNumber.GetBindingExpression(TextBox.TextProperty).UpdateSource();
Zobrazeno 9 zpráv z 9.