March 2008 Blog Posts

Binding to a View using Linq To SQL

Un post nel newsgroup di C# citava l'impossibilità di aggiornare dei dati recuperati da una vista mediante LinqToSQL. L'affermazione è corretta in quanto il designer by default crea delle classi alle quali manca l'informazione relativa alla primary key, infatti basta aggiungerla è avere una view aggiornabile. L'unica accortezza è quella di definire la primary-key in una classe parziale separata e cancellare dal designer la colonna che funge da PK altrimenti al primo "tocco" di designer tutto lo sforzo verrà vanificato. Technorati Tags: LINQ To SQL,Updatable View

posted @ Sunday, March 30, 2008 12:28 PM | Feedback (0)

PresentationTraceSources.TraceLevel e Databinding

Capire perchè un binding non funziona come dovrebbe in WPF non è molto semplice, immaginiamo questa semplice situazione: XAML <Window x:Class="WPF_Databind.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> <TextBox Text="{Binding Path=CustomerName}" Height="23" Margin="87,65,71,0" Name="textBox1" VerticalAlignment="Top" /> </Grid> </Window> Codice namespace WPF_Databind { public partial class Window1 : Window ...

posted @ Friday, March 28, 2008 11:28 AM | Feedback (0)

Altro che Obfuscator...

La cosa più divertente è che questo codice compila... (Dall' International Obfuscated C Code Contest) #include <X11/Xlib.h> #include <unistd.h> typedef long O; typedef struct { O b,f,u,s,c,a,t,e,d; } C; Display *d; Window w; GC g; XEvent e; char Q[] = "Level %d Score %d", m[222]; #define N(r) (random()%(r)) #define U I[n++]=L[n]=l; n%=222 #define K c=-l.u; l=I[i]; l.t=0; c+=l.u #define E l.e--&&!--L[l.e].d&&(L[l.e].t=3) #define M(a,e,i,o) a[0]=e,(a[1]=i)&&XFillPolygon(d,w,g,(void*)a,o,1,1) #define F return #define R while( #define Y if(l.t ...

posted @ Thursday, March 27, 2008 9:45 PM | Feedback (4)

Silverlight style browser

Attraverso Josh Smith vi segnalo questa piccola, ma utilissima utility, che consente di sfogliare gli stili dei controlli presenti in Silverlight 2.0. Vista l'architettura degli stili in Silverlight 2.0  (diversa rispetto a WPF) e la mancanza della feature "Create a Style Copy" in Blend 2.5 credo sia un ottimo tool per capire meglio come funzionano le cose "under the hood" Technorati Tags: Silverlight 2.0,Style browser

posted @ Tuesday, March 25, 2008 11:00 PM | Feedback (0)

Silverlight 2.0: Get control's code

Spettacolare! A questo indirizzo è disponibile tutto il codice sorgente dei controlli Silverlight 2.0 e relativi Unit tests, questo post di Shawn Burke descrive nel dettaglio quanto disponibile. Più "open" di cosi... Technorati Tags: Silverlight 2.0

posted @ Tuesday, March 18, 2008 9:58 PM | Feedback (0)

Silverlight: Occupare tutta la client-area del browser

Quando si crea un nuovo progetto Silverlight 2.0 in Visual Studio 2008 viene creato uno Usercontrol con la dimensione 400 x 300. <UserControl x:Class="TestSL.Page" xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> col risultato che il contenuto SilverLight non occupa tutta la client area del browser. Le possibili soluzioni sono: Eliminare la definizione di Width e Height col risultato che il designer di Visual Studio 2008 va in crisi. Sostituire Width e Height con MinWidth e MinHeight col problema evidente quando la dimensione...

posted @ Monday, March 17, 2008 11:15 PM | Feedback (0)

Application.GetResourceStream in Silverlight 2.0

Partendo da questo post di Jeff Prosise ho perso un pò di tempo per capire perchè non funzionasse e alla fine l'unica soluzione che ho trovato è iniettare una nuova immagine nel visualtree (ma non escludo problemi alla mia macchina). Mentre facevo qualche test ho notato un piccolo bug nella Beta1 relativo a Application.GetManifestStream(); Questo codice funziona correttamente in un applicazione WPF Uri uri = new Uri("giulia3.jpg", UriKind.Relative); StreamResourceInfo sri= Application.GetResourceStream(uri); mentre in un applicazione Silverlight 2.0 il metodo GetResourceStream ritorna null, al momento l'unica soluzione è quella di usare il...

posted @ Sunday, March 16, 2008 11:45 AM | Feedback (0)

WPF FluidKit

Su Codeplex è presente una libreria FluidKit per WPF che offre un interessante suite di controlli: ImageButton DragDropManager GlassWindow BalloonDecorator ItemSkimmingPanel + SkimmingContextAdorner PennerDoubleAnimation ElementFlow ( New ) Tra questi quello più spettacolare è sicuramente ElementFlow che permette di visualizzare il contenuto di un ItemsControl in diverse modalità Carousel Like.   La libreria è distribuita come codice sorgente e dovete compilarla sulla vostra...

posted @ Sunday, March 16, 2008 10:05 AM | Feedback (0)

Microsoft.VisualStudio.Zip

Dal blog di Bill McCarty apprendo l'esistenza di questa dll che permette di zippare/unzippare files in modo elementare. Affinchè si possa referenziare da VisualStudio è necessario disabilitare il viewer delle assembly presenti nella GAC aggiungendo questa voce nel registry: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Fusion] "DisableCacheViewer"=dword:00000001 Fatto questo referenziate la dll presente in C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Zip ( Zip.9.0 se avete VS2008) e usate le classi ZipFileCompressor/ZipFileDecompressor. Esempio: string[] files = Directory.GetFiles(@"c:\foo").Where(f=>f.EndsWith("jpg")).Select(f => new DirectoryInfo(f).Name).ToArray(); ...

posted @ Friday, March 14, 2008 8:05 AM | Feedback (6)

WPF vs Silverlight 2.0: Attenzione ai routed events...

Spulciando la documentazione di Silverlight 2.0 ho notato una diversa gestione dei routed events rispetto a WPF che in alcuni casi può modificare il comportamento finale di un applicazione. Partiamo da questo XAML scritto per WPF: <Window x:Class="WPF_RoutedEvents.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF routed events" Height="288" Width="473"> <Grid MouseLeftButtonDown="Grid_MouseDown"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" MouseLeftButtonDown="StackPanel_MouseDown"> <Image HorizontalAlignment="Center" Source="BMP.png" Height="75" /> <Image HorizontalAlignment="Center" Source="JPG.png" Height="75"...

posted @ Monday, March 10, 2008 7:39 PM | Feedback (0)

Silverlight 2.0 on Webhost4Life

Per quelli di voi che hanno Webhost4Life come servizio di hosting e vogliono pubblicare la propria applicazione Silverlight 2.0, le operazioni per configurare il server sono: Attivare, ovviamente, il supporto a .NET per la directory che ospita il progetto (Io ho impostato il supporto a 3.0/3.5) Aggiungere al proprio sito il supporto all'estensione MIME xap nel pannello di controllo usando: MIME Type: application/x-silverlight-app Estensione: .xap Enjoy Silverlight 2.0 programming! Technorati Tags: Silverlight 2.0,Webhost4Life

posted @ Monday, March 10, 2008 7:53 AM | Feedback (1)

WPF Adorners

Domenica mattina, giornata uggiosa..., quasi quasi mi faccio un Adorner. L'idea è quella di realizzare una demo che mostri come aggiungere delle informazioni di selezione (tipo designer) attorno al controllo che ha il focus e l'utilizzare un Adorner è sicuramente la soluzione migliore in quanto è un elemento associato a un UIElement che può renderizzare del contenuto in un layer che sta "sopra" lo UIElement associato, di fatto arricchendolo. Step 1: Create l'adorner ereditando dalla classe Adorner class MyAdorner:Adorner { /// <summary> ...

posted @ Sunday, March 9, 2008 11:13 AM | Feedback (0)

Expression Blend 2.5

Eccolo qui. A questo punto mi chiedo: Com'è possibile avere una versione 2.5 se la versione 2.0 non è ancora ufficialmente uscita e, sopratutto, chi comprerà la 2.0 sapendo che non supporta Silverlight 2.0 ed è già disponibile una versione "+0.5"? Technorati Tags: Expression Blend 2.5

posted @ Wednesday, March 5, 2008 9:46 PM | Feedback (4)