marzo 2008 Blog Posts
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
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
...
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
...
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
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
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...
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...
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...
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();
...
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"...
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
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>
...
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