Entrambi utilizzano lo stesso concetto: definire alcune righe e colonne e aggiungere contenuto in posizioni specifiche. Ma la griglia è il contenitore di layout WPF più comune, mentre il layout basato su tabella in html è very controversial. Quindi, perché il layout della griglia di WPF è stato elogiato e il layout basato sulla tabella di html è stato considerato "cattivo" (da alcuni)?Il layout basato sulla griglia di WPF non è lo stesso del layout basato su tabella che è tabù in html?
risposta
Il punto è che Grid in WPF è definito come un meccanismo di layout, mentre una tabella in HTML serve per contrassegnare i dati tabulari, in cui normalmente si utilizza un DataGrid o un oggetto simile in WPF.
Il problema con l'HTML in questo senso non è tanto che si utilizzano le tabelle per il layout. In effetti, lo CSS3 Template Layout Module non è molto diverso. Il problema è che il contenuto delle tabelle non ha una struttura semantica e quindi è inaccessibile agli screen reader, ai motori di ricerca e simili. Loro si aspettano una tabella per contenere dati tabulari poiché qualsiasi meccanismo di layout visivo non può avere alcun senso per qualcosa che non ha vista (come lettori di schermo, web crawler o non vedenti).
In WPF ci sono vari modi per risolvere questo problema. Prima di tutto, WPF è progettato per la progettazione grafica dell'interfaccia utente e come tale molto visivamente radicato. Ciò implica automaticamente una certa inadeguatezza per i non vedenti. Inoltre, i web crawler non sono davvero una preoccupazione (ignorando XBAP per un po 'di tempo, non li abbiamo visti finora). Oltre a ciò, WPF lavora con le tecnologie di accessibilità esistenti in Windows per garantire che i lettori di schermo possano dare un senso all'interfaccia utente nello stesso modo in cui potevano utilizzare un'applicazione Windows tradizionale. Quindi qui ci sono più meta-informazioni sull'accessibilità che in HTML. Inoltre, l'unica cosa accessibile all'esterno è una griglia completamente renderizzata. Non la marcatura al di sotto di essa, ma piuttosto una serie di controlli che si trovano da qualche parte sullo schermo. E a quelli si applicano le stesse regole come per qualsiasi altra finestra.
Un altro punto contro le tabelle per il layout in HTML è che si mescolano il contenuto e la presentazione, rendendo difficile cambiare solo uno di questi e anche rendendo difficile accedere al contenuto da solo (simile al problema precedente per gli screen reader e crawler web). In WPF entrambi sono già separati (tramite associazione dati) e puoi separarli ulteriormente, se lo desideri, creando controlli personalizzati per incapsulare parti di un layout, estraendo stringhe e immagini in risorse, & c.
Per riassumere, l'HTML non disponeva di un meccanismo adeguato per la creazione di layout e tabelle complessi e accattivanti era una soluzione a tale problema (con tutte le debolezze e i problemi intrinseci). D'altra parte, il WPF è stato costruito dalle fondamenta con tecniche e modi per affrontare esattamente queste carenze e per la maggior parte sono in realtà le migliori pratiche in questo campo.
Che cosa ti fa davvero pensare, "Perché HTML 5 non ha creato un nuovo tag' Beh, ci stiamo arrivando, un po ', con qualche layout CSS più avanzato. Ma questi sono, se non del tutto, supportati solo da browser all'avanguardia e persino non coerenti tra browser diversi. Ma in realtà, l'HTML è ancora un linguaggio di layout piuttosto scadente rispetto a quelli che sono stati costruiti appositamente per questo scopo. –
Joey
Penso che una grande parte abbia a che fare con la non comprensione di quali siano realmente gli ostacoli. Un sacco di aziende come avere i loro dati mescolati con il layout perché rende più difficile raschiare ma nessuno vuole riconoscerlo, così continuano a gettare le idee respinte in un numero significativo di applicazioni pratiche. I risultati sono brutti. –
'e ha salvato l'intera community di sviluppo web di enormi mal di testa?" –
chi dice che la tabella è "tabù" in HTML? Se hai un tavolo, e sembra un tavolo, si sente come un tavolo, ciarlatano come un tavolo - perché non renderlo con un tavolo ?? –
marc_s: il rendering dei dati tabulari in una tabella non equivale a tabelle di utilizzo errato come elementi di layout. – Joey