Silverlight MVVM e Preview Data a Design Time in Expression Blend


Expression Blend usa il namespace d per assegnare comportamenti a design time, ad esempio in uno UserControl SilverLight:

<UserControl ...
xmlns:vm="clr-namespace:DocumentViewer.ViewModel"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
d:DesignWidth="640" d:DesignHeight="480">
<UserControl.Resources>
<vm:DocumentVM x:Key="viewmodel" />
</UserControl.Resources>


possiamo sfruttare la proprietà d:DesignInstance insieme a d:DataContext per istruire Blend a creare una istanza della classe indicata:

<Grid x:Name="LayoutRoot" DataContext="{StaticResource viewmodel}" d:DataContext="{d:DesignInstance vm:DocumentVMMock, IsDesignTimeCreatable=True}">

l’aspetto interessante è che a run time il data context è assegnato alla view model DocumentVM, mentre a design time è assegnata a DocumentVMMock, che dai nomi potete immaginare cosa fanno :D, senza necessita di if(IsDesignTime) nel code behind!

 

la figu da Expresion Blend:

 image

 

l’esempio l’ho preso qui che parla di SilverLight 4.0, ma questo funziona anche col 3.0

author: Davide Cuppone | posted @ martedì 9 febbraio 2010 15.48 | Feedback (0)

Uomo avvisato mezzo salvato


Una volta in un bel libro su ASP.NET avevo letto (cito a memoria):

Lo sviluppatore è avvisato a configurare l’ambiente di sviluppo, ad utilizzare il sessionState su Sql Server, in modo che qualunque sia poi la configurazione in produzione, non avrà brutte sorprese

Appena la lessi pensai, ottimo consiglio, poi per la pigrizia di tutti i giorni non ho mai seguito il consiglio.

Oggi ho perso 3 ore per capire perchè non serializzasse una banalissima classe, peccato che la classe avesse un riferimento ad uno UserControl (di cui ovviamente non ricordavo più l’esistenza) e la serializzazione falliva.

author: Davide Cuppone | posted @ giovedì 10 dicembre 2009 16.25 | Feedback (1)

Parameters.AddWithValue() e Parameters.Add() cosa conviene usare?


Noto che in giro si fa largo uso della AddWithValue(), a me non è mai piaciuta sarà per il mio naturale snobbismo delle cose semplici. Dopo un po di anni che ci pensavo su ho deciso che era giunto il tempo di capirci meglio, mi sono armato di F11 e ho guardato un po dentro la libreria System.Data.

Quello che sospettavo mi viene confermato alla riga 1271 del file SqlParameter.cs, ovviamente esegue un _value.GetType() per poter preparare i parametri da passare a SQL Server. Se siete dei fissati dell’ottimizzazione tenetelo da buon conto.

Un altro aspetto è invece un po più subdolo, è legato ai tipi di dato che potrebbero essere rappresentati in SQL Server in differenti modi, ad esempio nel caso di String la SqlParameter imposta come tipo sql l’nvarchar, se sfortunatamente state lavorando con un DB che usa varchar, avverrà una seconda conversione da parte di SQL Server.

Se poi spaventa il dover impostare il valore in due righe di codice:

com.Parameters.Add("@parametro", SqlDbType.NVarChar);
com.Parameters["@parametro"].Value = _value;

 

E’ meglio usare questa scrittura molto più elegante:

com.Parameters.Add("@parametro", SqlDbType.NVarChar).Value= _value;

author: Davide Cuppone | posted @ martedì 24 novembre 2009 17.54 | Feedback (2)

Pensieri liberi


Venerdì scorso mi si è palesato, dietro il monitor, il cliente mentre ero su FaceBook, in tutta tranquillità, acquisita in anni di consulenza, ho finito quello che stavo facendo e poi ho dato retta al cliente.

Questa mattina, in riunione per pianificare delle nuove funzionalità all’applicazione web dello stesso cliente, si parlava di un mini sistema di messaggistica, allora me ne sono uscito con l’esempio di come una cosa simile è fatta in facebook a livello di user experience e dopo due minuti erano tutti convinti.

Son sicuro che se raccontavo la stessa cosa senza l’esempio di facebook eravamo ancora li a discutere e addio pranzo!!

 

Domanda: Venerdì scorso stavo perdendo tempo del cliente? o stavo lavorando per il cliente??

Risposta: mi fanno pena le aziende che chiudono gli accessi ad alcuni siti internet!!!

PS: Adesso mi devo inventare un esempio per giustificare il tempo perso a scrivere questo post :D

author: Davide Cuppone | posted @ martedì 3 novembre 2009 12.54 | Feedback (1)

Tempi virtuali


Ho ormai abbandonato Microsoft Virtual PC 2007 per Windows Virtual PC, dopo più di una settimana d’uso devo dire che le performance sono molto migliori sia per la macchina host che per la macchina guest, però un po di problemi li ho avuti.

Da Windows Virtual PC è sparito il tasto Host (che di solito era Alt Gr), e non commento!!!

Windows Virtual PC è molto più lento a salvare lo stato della macchina virtuale (Hibernate) e veramente lunghissimo a farla ripartire, ho dovuto puntare la sveglia mezz’ora prima.

Sul PC di casa con host Windows 7 e guest windows 7 non si riesce a installare le Integration Features, non ho avuto tempo di cercare se è un problema conosciuto o no.

Sulla macchina virtuale con Windows Server 2003 R2 Standard invece ho installato le Integration Feature (anche se ufficialmente non supportano Windows Server 2003) fa un po le bizze quando parte, a volte rimane nero per un po di tempo ma poi si lavora che è uno spetacolo.

Su suggerimento dell’amico Salvo ho poi provato la Sun Virtual Box, bhe fantastica, intanto su macchina con host a 32 bit supporta sistemi operativi guest a 64 bit, per cui son partito subito con l’installazione di W7 a 64 bit e VS 2010 a 64 bit, non l’ho usato tanto da potermi esprimere sulle prestazioni ma la prima impressione è più che positiva.

author: Davide Cuppone | posted @ venerdì 30 ottobre 2009 14.45 | Feedback (5)

cosa pensare?


Session[null] = myObject;

funziona tranquillamente, e

Object myObject = Session[null];

restituisce esattamente lo stesso oggetto;

author: Davide Cuppone | posted @ mercoledì 21 ottobre 2009 12.39 | Feedback (0)

utili Extension Methods


 

gli extension methods possono essere utili per migliorare la lettura del codice, ad esempio nel caso di XML con attributi facoltativi:

public static class ConversionExtension
{
public static String GetSPValue(this XAttribute attribute)
{
return attribute == null ? null : attribute.Value;
}

public static bool? GetBooleanSPValue(this XAttribute attribute)
{
return attribute == null ? null : new Nullable<Boolean>(Boolean.Parse(attribute.Value));
}
}

 

esempio d’uso:

bool? fillInChoice = result.Attribute("FillInChoice").GetBooleanSPValue();

 

si SP sta per SharePoint infatti il CAML prevede l’omissione di alcuni attributi.

author: Davide Cuppone | posted @ giovedì 15 ottobre 2009 16.04 | Feedback (3)

live webcast su SilverLight 3.0 e ASP-NET MVC


con una premessa del genere:

…including a keynote from Scott Guthrie and presentations from Tim Heuer, Brad Abrams, Karl Shifflett and other community leaders

due giornate 17 Settembre e 3 Ottobre a cui non si può certo mancare, ovviamente per chi come me non pensa di andare a Seattle e New York, la può seguire comodamente dalla poltrona di casa ;)

iscrizioni e dettagli dell’agenda: http://www.msdnevents.com/firestarter/index.html

author: Davide Cuppone | posted @ venerdì 11 settembre 2009 10.23 | Feedback (0)

SharePoint Solution Generator 2008, Svcs 1.3, schema.xml e content type


Nell’ultimo periodo ho lavorato molto con i progetti di SharePoint Solution Generator 2008, e soprattutto con il file schema.xml. Spesso mi capita di avere dei dubbi su quello che sto facendo allora ho deciso di organizzare questi dubbi in una sorta di FAQ per un riferimento più veloce.

 

1. Come faccio ad assegnare un ordine alle colonne nella DispForm.aspx (vista di dettaglio) e nella EditForm.aspx (modifica dell’elemento)?

L’ordine delle colonne è dato dall’ordine del content-type, quindi se si vuole dare un ordine si devono elencare le colonne nel <FieldRefs>

Nota: le colonne ereditate da content-type di base vengono visualizzate per prime  

2. Perchè usare i content-type nella definizione delle liste?

Perchè la modifica del content-type (aggiunta, eliminazione, modifica di colonne) si riflette immediatamente su tutte le liste che lo utilizzano, in questa visione il content-type è come un template “dinamico” per le liste. Poi per altri mille motivi come associazione di workflow, ecc…

2a. Quindi se modifico lo schema di un Elenco e ridistribuisco la solution modifico anche le liste esistenti?

No, vale solo per il content-type, ma diventa lo schema per le nuove liste basate su quel tipo

3. Ho cambiato il Title nel file instance.xml e/o il Name nel ContentType, ma questo non si riflette nel Deploy, soprattutto nei nomi delle feature:

Il nome che sharepoint visualizza nell’elenco delle feature del sito dipende dal nome della cartella sotto 12/FEATURE/… Si hanno due modi per cambiare questo nome: Dalla WSP view di Visual Studio. Cancellando la cartella pkg della solution facendola rigenerare da Visual Studio. Nel secondo metodo verranno rigenerati gli ID delle feature per cui eventuali siti che usini queste feature potrebbero smettere di funzionare correttamente. Nel primo fare attenzione ad immettere gli stessi Title e Name che avete nella solution altrimenti cambiando macchina di sviluppo verranno generate cartelle di deploy con nome diverso.

3a. Posso usare caratteri speciali nel Title della ListInstance?

Con un work around, il generatore del WSP utilizza il Title per nominare la cartella che poi conterrà la feature dell’istanza di lista, per cui alla prima compilazione non usare caratteri speciali, una volta generato il WSP si potrà modificare il Title usando tutti i caratteri che si vuole tanto VS non andrà a cambiare il nome della cartella (sempre che poi riutilizziamo lo stesso pkg in tutte le macchine di sviluppo!!, si torna al punto precedente)

4. Devo archiviare il pkg nel repository (source control)?

Può darsi (sono pur sempre un consulente per cui non darò risposte certe). Archiviando il pkg si garantisce che ogni compilazione generi gli stessi FeatureID, ma se si lavora in team sulla stessa solution è un bel problema…, sicuramente è da conservare il pkg della macchina di deploy se prevedete di rilasciare aggiornamenti della solution.

5. Perchè dichiarare le colonne dentro il content-type, differenza con il FieldRef?

Da verificare

http://www.sharepointu.com/rmarwantarek/archive/2007/08/12/list-definitions-type-and-basetype.aspx

author: Davide Cuppone | posted @ sabato 22 agosto 2009 13.13 | Feedback (5)

Impressionante Windows 7


Sul vecchio (di 3 anni) Dell Inspiron 6400, che stavo per pensionare ho fatto l’upgrade da Vista a Windows 7, il risultato è spettacolare è molto più veloce e non ho perso nulla di quello che era installato sul pc e nessun problema di driver. Il programma che maggiormente ha beneficiato dell’upgrade è IE 8 adesso veloce almeno quanto google chrome.

Sul PC di casa un Q6600 ho invece installato Windows 7 a 64 bit e a prima impressione è molto più veloce anche quello, ma non ho avuto modo di testarlo bene ancora.

[OT] Scenetta familiare :

Io : Anna ho installato Windows 7 a 64 bit…

Anna: E allora è più veloce o più pesante?

Io: Fa niente… :(    e penso : è proprio vero che il mondo è diviso in 10 persone…  :P

author: Davide Cuppone | posted @ giovedì 20 agosto 2009 16.37 | Feedback (2)

Silverlight 3.0 prossimi al rilascio?


la notizia è un po’ vecchia ma se rispettano la data del 10 luglio mi toccherà portare il portatile in spiaggia e studiare… ;)

author: Davide Cuppone | posted @ lunedì 6 luglio 2009 11.29 | Feedback (0)

Chiudiamo la Rrete


mio modesto riassunto dell'intervista: Siccome non so di cosa sto parlando la chiudo, quella rrete dove sono amici dei mafiosi e vogliono uccidere berlusconi, i teletubbies e i gattini

 

fonte : intervista audio originale

author: Davide Cuppone | posted @ mercoledì 11 febbraio 2009 14.50 | Feedback (2)

Kaxaml v1.0 un leggero XAML Editor


Ho provato velocemente kaxaml un editor xaml molto leggero e veloce, inoltre belli e utili per cominciare, gli snippet su Styles e Brushes e gli esempi Getting Started with XAML, insomma se Blend vi ha spaventati cominciate a giocare con Kaxaml.

 kaxaml

La beta supporta Silverlight 2.0 anche se gli snippet sono quelli di WPF, ma ovviamente c'è My Snippets in cui salvare i propri snippet.

author: Davide Cuppone | posted @ martedì 10 febbraio 2009 11.42 | Feedback (0)

Se i test per le certificazioni fossero così divertenti...


https://www.microsoft.com/click/areyoucertifiable/default.aspx

se mi volete aggiungere nella lista degli amici mi sono registrato come davcup

buon divertimento

author: Davide Cuppone | posted @ lunedì 9 febbraio 2009 16.35 | Feedback (1)

ASP.NET MVC primo progetto e impressioni


Dovendo sviluppare un sito molto semplice composto da una decina di form per inserimento dati con di fatto un mapping uno a uno con le tabelle di anagrafica del DB sottostante, ho deciso di utilizzare ASP.NET MVC beta, la prima settimana è stata di apprendimento e quindi di tempi lunghi nella realizzazione delle form. Una volta realizzate le diverse tipologie di form il lavoro è diventato veloce e "modulare" insomma una sorta di copia incolla e rinomina.

Una delle cose che inizialmente mi stava spingendo a tornare alle WebForm era la validazione lato client, per fortuna ho trovato questa interessante libreria livevalidation

Il mio giudizio finale nell'uso di ASP.NET MVC per questa tipologia di siti, diverse form di data entry poco navigabili tra loro, è sicuramente positivo, ovviamente non mancherò di testarlo su applicazioni più strutturalmente complesse.

Non ho ancora fatto la migrazione alla RC, ma da quello che ho letto non dovrebbe essere traumatica.

author: Davide Cuppone | posted @ giovedì 29 gennaio 2009 9.50 | Feedback (4)

Articoli ed esempi su M-V-VM


Karl Shifflett ha scritto diversi post su M-V-VM adesso ha deciso di riunirli in una serie di articoli sull'aticolo che prevedono anche un corposo esempio che copre i vari aspetti dell'M-V-VM e non ultimo di importanza per febbraio è annunciato un generatore di codice. Da seguire con attenzione ;)

author: Davide Cuppone | posted @ lunedì 26 gennaio 2009 10.14 | Feedback (0)

[OT] Obama in Silverlight 2


in diretta in silverlight 2 qui

author: Davide Cuppone | posted @ martedì 20 gennaio 2009 17.43 | Feedback (0)

Libreria opensource di componenti SilverLight


esempi e codice: http://slextensions.net/

author: Davide Cuppone | posted @ martedì 20 gennaio 2009 10.23 | Feedback (0)

Quando non usare ListBox


Semplice esempio per spiegare le differenze tra la ListBox e l'ItemsControl la discriminante di fatto é:

"I just want to display a series of items. I might want to do a pop-up when someone hovers over an item or even use things like hyperlinks in the items.  In these cases using a ListBox can become a problem because the ListBox wants to handle mouse events instead of handing them to me"

 

author: Davide Cuppone | posted @ martedì 20 gennaio 2009 9.02 | Feedback (0)

Lunedi mattina continuare a dormire


http://blogs.msdn.com/webnext/archive/2009/01/16/strangely-hypnotic-silverlight-app.aspx

author: Davide Cuppone | posted @ lunedì 19 gennaio 2009 11.00 | Feedback (0)