WPF

There are 12 entries for the tag WPF
Premessa: doverosa :-)

…che in quanto tale forse andava fatta prima… :-) Approfitto dell commento di Nicolò per farla adesso, nonostante ne abbia già parlato anche se mi rendo conto solo ora che probabilmente annegata in un discorso ampio e complesso la cosa possa passare inosservata. Attenzione… :-) Osservate il post di Corrado sulla localizzazione: Se provate, in un qualsiasi punto del ViewModel, a scrivere “this.LocalizedText.” scoprite che l’intellisense non vi fa vedere un bel nulla…eppure questo funziona che è un piacere: Come è possibile? Il giochetto è abbastanza semplice ed...

posted @ lunedì 7 dicembre 2009 00:15 | Feedback (0)

WeakReference, I love you!

Ayende ne ha parlato proprio in questi giorni, ed io è qualche settimana che giro intorno… anche se lo scenario è diverso. Unoa dei problemi delle differenze tra Wpf e Windows Forms è che per il mondo Wpf i concetti di IDisposable e di IComponent sono del tutto irrilevanti, del resto non ci sono risorse, aka handle ad esempio, da rilasciare. In Windows Forms sfruttavo il fatto di poter realizzare un IComponent e avere gratis la chiamata a Dispose nel momento in cui veniva fatta la Dispose del componente contenitore, ad esempio la Form. In molti casi deviavo...

posted @ giovedì 1 ottobre 2009 10:46 | Feedback (0)

Wpf: “Drag & Drop” Behavior, okkio :-)

Questo manuale proprio non mi va giù :-) Pochissimi giorni fa ho introdotto nel mio toolkit un behavior per generalizzare la gestione del Drag & Drop, a breve il tutto probabilmente finirà su CodePlex, ma non è questo l’argomento odierno. Houston abbiamo un problema <cit.> Nel post di cui sopra, per agganciare il behavior ad una ListView facevamo: <ListView Margin="5" HorizontalAlignment="Stretch" behaviors:DragDropManager.DataObject="{Binding Path=ItemsToDrag}" behaviors:DragDropManager.DataObjectType="myType" ItemsSource="{Binding...

posted @ mercoledì 30 settembre 2009 17:07 | Feedback (0)

Wpf: “Drag & Drop” Behavior, embrionale.

Se soffrite da dipendenza acuta da M-V-VM questa è una discreta rottura perchè il drag & drop è “roba” totalmente da Presentation (aka View) ma la logica è totalmente da Business (aka ViewModel). La gestione del drag & drop è quindi un ottimo candidato per divertirci con gli attached behavior, nome figoso per le ormai legacy attached properties. Quello che vogliamo ottenere è questo: <ListView HorizontalAlignment="Stretch" SelectedItem="{Binding Path=Selection}" behaviors:DragDropManager.DataObject="{Binding Path=Selection}" ...

posted @ martedì 29 settembre 2009 10:42 | Feedback (2)

In medio stat virtus: Blend 3 e i design time data

Poco tempo fa ho parlato della funzionalità di Blend 3 che permette di avere dei dati di esempio a design time al fine di ottimizare proprio la design experience, subito dopo Corrado ha parlato di qualcosa di ancora più figoso. Purtroppo siamo alle solite: non è tutto oro quel che luccica. Se avete un ViewModel, o più in generale un DataContext, un po’ complesso la soluzione di Corrado purtroppo non funziona. Per un po’ complesso intendo che basta banalmente esporre dalla classe, che verrà utilizzata come DataContext, un tipo generico e siete “fritti” perchè lo xaml non ha...

posted @ giovedì 16 luglio 2009 18:35 | Feedback (1)

Utente, perchè sei tu… utente!

Una “mailing list” spontanea tra svariati partecipanti mi porta verso questo post. Il problema è la validazione dell’input dell’utente, vediamo da dove sono partito: La situazione è decisamente banale, classicissima Window (Wpf) per l’editing di una Entity (Person), il tutto basato strettamente su M-V-VM, quindi è un “requisito” che nel code-behind della Window non ci finisca nulla, o xaml o ViewModel. Il problema è la vadilazione dell’input, diamo un paio di regole di business che “incriccano” la cosa: Rule A: Person.FirstName non deve essere vuoto; Rule B: Person.LastName non deve...

posted @ venerdì 12 giugno 2009 12:59 | Feedback (1)

Adorner Saga: “Empty Place Holder” & TextBox.Command

Il nuovo e fiammante Visual Studio 2010 Beta 1 ha partorito il primo progettino… e non poteva che essere un behavior per WPF. Ci sono ancora 2 cose, e probabilmente molte altre ;-), che l’utente è abituato ad avere in campi diversi ma per certi versi complementari: Interazione con l’(eco)sistema attraverso la tastiera: l’utente quando ad esempio esegue una ricerca è decisamente abituato a: inserire i criteri di ricerca, come ad esempio un elenco di keyword, all’interno di una TextBox; premere invio; e non a prendere il...

posted @ giovedì 21 maggio 2009 10:05 | Feedback (0)

Loading… Adorner #2

Sempre in tema di UX ritengo fondamentale che un’applicazione Windows sia fortemente basata su multithreading perchè se c’è una cosa che mi da veramente fastidio è vedere l’applicazione freezata, con quel laconico (Not responding) nella barra del titolo, solo perchè l’operazione “lunga” viene eseguita nello stesso thread della UI. In effetti se dato uno sguardo al task manager scoprite cose interessanti: Un mondo multithreaded è sicuramente più difficile da dominare ma è anche vero che una segretaria incazz*ta è forse peggio di una suocera logorroica, inoltre se cerchiamo scopriamo che il framework .net ci mette...

posted @ venerdì 15 maggio 2009 11:55 | Feedback (2)

ListView perchè sei tu, ListView… (part 2)

Abbiamo parlato della possibilità di mettere in binding i SelectedItems della ListView di WPF con una nostra collection, altra cosa a cui abbiamo accennato è la mancanza, sulla ListView, di un ICommand per gestire il doppio click su un elemento della lista. Siccome abbiamo scoperto, almeno io ;-), la potenza delle attached properties facciamocelo. ItemDoubleClickCommand Partiamo come al solito dal risultato che vogliamo ottenere: <ListView local:ListViewManager.ItemDoubleClickCommand="{Binding Path=Select}" /> Molto semplice: poter dichiarare un nuovo Command e metterlo in binding con qualcosa che implementi l’interfaccia ICommand; per arrivare li, nell’ormai vecchio e familiare ListViewManager, cominciamo...

posted @ giovedì 14 maggio 2009 15:15 | Feedback (1)

WPF “Adorner(s)” rulez: #1

Una delle cose che “pretendo” è che la UX offerta sia consistente con quella dell’ecosistema che ospita l’applicazione, questo per un’applicazione Windows si traduce in moltissime cose, e moltissimo lavoro, tra cui ad esempio: Supporto per la navigazione/gestione comandi con la tastiera; Supporto per la gestione dei comandi tramite shortcut; Comunicazione con l’utente; Async, Async, Async (more to come…); Disposizione, aspetto e layout dei controlli consistente con quello del sistema; etc.. Tra queste...

posted @ giovedì 14 maggio 2009 08:53 | Feedback (1)

ListView perchè sei tu, ListView… (part 1)

La ListView di WPF è semplicemente la manna, unita al motore di templating, che ha potenzialità infinite, nel giro di pochissimo tempo vi fa dimenticare che Microsoft si è “dimenticata” di mettere una griglia tra i controlli builtin; e non ditemi che esite quella del WPF Toolkit perchè siamo lontani anni luce da qualcosa che rasenti la decenza… lasciamo perdere poi i controlli di terze parti, io ho provato quello di Xceed, carino, stiloso, ma un chiodo spaventoso… fa pure rima :-D Ma torniamo a noi, abbiamo la nostra bella ListView e abbiamo anche deciso, che causa cattive frequentazioni...

posted @ mercoledì 13 maggio 2009 15:47 | Feedback (2)

Spettacolo!

Era un po’ di tempo che non mi divertivo così tanto a fare questo lavoro! Da un mesetto a questa parte sto lavorando ad un nuovo progetto che è nato quasi per caso. In dicembre IL mio cliente storico si presenta e mi dice che avrebbero bisogno di una semplice applicazione per fare l’inventario di una delle loro attività al pubblico. L’obiettivo è quello di avere uno strumento snello e semplice che permetta ad n operatori di lavorare insieme e funzioni senza fronzoli e soprattutto senza problemi dato che il tempo stimato per l’inventario è di 72h...

posted @ sabato 7 febbraio 2009 18:12 | Feedback (7)