agosto 2006 Blog Posts
Ho un PC 8088 che ancora oggi sta svolgendo sotto DOS il suo duro lavoro con un superpotente hard disk da 210MB. Il suo unico scopo di vita è quello di far girare una applicazione gwbasic che acquisisce dei dati via seriale. L'unica pecca è che se la CPU va ad una velocità superire ai 4,77MHz (cioè 8MHz con il turbo a ON) l'applicazione gira troppo "veloce" e l'apparecchio non risponde più correttamente.
Tutto bello, peccato che mantenere in vita un hardware di quell'età sia tutt'altro che banale e anche una virtual machine non viene in aiuto.
La vera soluzione sarebbe la riscrittura...
Da pochi anni ci si riempie la bocca della onnipotente parola "standard". Suona bene, zittisce chiunque, ha persino vincolato le scelte delle tecnologie e dei prodotti del grande gigante Microsoft (e non solo) che sembrava poter vivere di sole tecnologie proprietarie. Sembra tutto bello ma ... (c'è sempre un ma) ... spesso gli standard sono una vera schifezza.
Uno dei difetti maggiori di molti standard è quello di definire delle casistiche che poi però non vengono implementate da nessuno in quanto inutili o eccessivamente complesse. SMTP così come tantissimi standard definiti nelle RFC cadono pienamente in questo caso (SMTP cade in una...
Ho chiesto e ottenuto di sviluppare un progetto di una User Interface con WPF e non me ne sono affatto pentito sebbene abbia lavorato sulla beta2.La peculiarià principale di questa applicazione è stata di non avere un'interfaccia grafica standard Windows ed in cui gli stessi controlli di base non erano direttamente utilizzabili.Ho dovuto quindi sviluppare diversi user ma soprattutto custom control che, raccolti in un assembly dedicato, hanno costituito i mattoncini base dell'applicazione.
Lo stesso input utente, proveniendo da un dispositivo custom, doveva essere gestito in modo differente da mouse e tastiera e la gestione del controlli attivo non ho potuto demandarla alla gestione del...
Domande semplici a cui non corrispondono risposte altrettanto semplici.Estrapolo da un mio custom control questi tre metodi che risolvono i quesiti.
Considerazioni:
Mi è piaciuto il VirtualizingStackPanel che rappresenta la viewport o "finestra" visibile della lista
Altrettanto bello che VerticalOffset e ViewportHeight siano double così da soddisfare anche liste con elementi non omogenei
Trovo folle che queste basilari informazioni non siano più facilmente accessibili direttamente dalle classi come la ListBox.
protected bool IsItemVisible(ListBox lb, int Index){ if(lb.Items.Count == 0) return false; ListBoxItem lbi = lb.ItemContainerGenerator.ContainerFromIndex(0) as ListBoxItem; VirtualizingStackPanel vsp = VisualTreeHelper.GetParent(lbi) as VirtualizingStackPanel; int FirstVisibleItem = (int)vsp.VerticalOffset; int VisibleItemCount = (int)vsp.ViewportHeight; if(Index >= FirstVisibleItem && Index...