February 2008 Blog Posts

Determinare la modalità "Design mode" in WPF

Se avete letto questo blog di ScottGu (che ultimamente ha più "ascolti" del Festival di SanRemo) noterete come il data model generi dei dati dummy a design time usando: if (HtmlPage.IsEnabled==false){...} Ma qual'è l'equivalente in "Full WPF"? Voilà! if (DesignerProperties.GetIsInDesignMode(new DependencyObject())) { LoadDummyData(); } Lo è quello di avere dei dati fittizi da utilizzare per disegnare il relativo DataTemplate, peccato che Expression Blend si ostini a creare un ObjectDataProvider alla faccia di tutti i vari pattern MVC/MVP... Technorati Tags:...

posted @ Friday, February 29, 2008 8:24 PM | Feedback (0)

[WPF] WatermarkedTextBox

Leggendo il minicorso di ScottGu non ho potuto fare a meno di  notare come SilverLight 2.0 nasca già con dei controlli che tutt'ora mancano in WPF come, ad esempio, la WatermarkedTextBox. Ho deciso quindi di crearmi un alternativa per full WPF. Ho creato un controllo WatermakedTextBox ereditando da TextBox e aggiungendo una DependencyProperty Watermark public class WatermarkedTextBox:TextBox { #region Watermark /// <summary> /// Watermark Dependency Property /// </summary> public static readonly DependencyProperty WatermarkProperty = DependencyProperty.Register("Watermark",...

posted @ Thursday, February 28, 2008 11:07 PM | Feedback (0)

Vista Sp1 e problemi con WPF

Dopo avere installato il SP1 di Vista mi sono ritrovato con lo stesso problema di rendering che avevo riscontrato dopo l'installazione dell'hotfix KB 938660, ai tempi velocemente risolto rimuovendolo. Il problema è legato alla non corretta gestione delle trasparenze e si traduce in un antiestetica barra verticale nera al posto della solita ombra verticale. Dopo aver girovagato per la rete (Connect incluso) in cerca di supporto ho provato a "giocare" con il pannello di controllo della mia scheda grafica NVidia e alla fine ho trovato l'opzione "incriminata"   In questa posizione...

posted @ Friday, February 22, 2008 6:58 PM | Feedback (0)

Vista (please): Don't touch my views!

Uno degli aspetti più noiosi di Windows Vista è che, di propria iniziativa, si mette a cambiare la vista del contenuto delle cartelle senza nessun motivo. A volte sfogliando con file explorer mi ritrovo con le stelline dei ratings oppure "durata" e "autore" associati ai files .cs. Ovviamente l'installazione del SP1 non ha risolto il problema ma finalmente è arrivata la soluzione (e personalmente faccio un applauso all'autore) un "tocco" di registry e il problema è sparito. Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell] "FolderType"="NotSpecified" Source: Bill McCarty's blog ...

posted @ Sunday, February 17, 2008 11:26 AM | Feedback (2)

Dynamic ordering with LINQ

Nei newsgroup ogni tanto si trovano delle domande "stuzzicanti" quella che di recente mi ha incuriosito più di altre è stata "Come faccio a ordinare una query LINQ in base al contenuto di una variabile?" ovvero, è possibile scrivere qualcosa del tipo: string column = "Country"; var ret = from c in db.Customers orderby column select c; Il codice compila ma non produce ovviamente il risultato sperato, ecco quindi una serie di possibili alternative che ho verificato con una semplice applicazione che vedete qui sotto:   Prima soluzione: (Quick & Dirty) Mega-switch e creare le...

posted @ Wednesday, February 13, 2008 7:10 PM | Feedback (6)

Vista SP1: Get it here...

Volete installare il service pack 1 di Vista? (English, French, German, Japanese, and Spanish only) scaricatelo dal sito OEM di Microsoft. "Once you download the Windows Vista SP1 package, you will need to extract the appropriate .exe file for the language you wish to install." Technorati Tags: Vista,SP1

posted @ Tuesday, February 12, 2008 9:35 AM | Feedback (3)

Tutti pazzi per la camicia...

...e quante storie per una camicia... Io esigo la catena da tamarro D.O.C Preordered here 

posted @ Friday, February 8, 2008 11:57 AM | Feedback (0)

Another Cider issue..

Continuo a pensare che il designer di WPF di VS2008 sia una delle note più dolenti di questo rilascio... Creo un nuovo progetto WPF Aggiungo un nuovo UserControl Inserisco, a manina, lo UserControl appena creato in Window1. (A manina perchè non è disponibile nella toolbox) Assegno, via PropertyGrid, un nome allo UserControl Compilo... Anzi No!, non compila! Questo lo Xaml... <Window x:Class="D00_Usercontrol.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:l="clr-namespace:D00_Usercontrol" Title="Window1" Height="356" Width="574" MouseDown="Window_MouseDown"> ...

posted @ Wednesday, February 6, 2008 10:11 AM | Feedback (0)

To attach or not attach?

Partendo da questo ottimo articolo di Janky, ho fatto fatto qualche prova con il metodo Attach del DataContext ottenendo dei risultati inizialmente inattesi che comunque rispettano quello che è il comportamento tipico del DataContext. Ho utilizzato questo banale esempio con l'intento di simulare uno scenario: Pagina1: Leggo un dato e lo modifico Pagina2: Visualizzo il rapporto e confermo le modifiche. Customer cust; //Page1, read customer, updates City property using(MyDataContext db1 = newMyDataContext()) ...

posted @ Wednesday, February 6, 2008 8:32 AM | Feedback (1)

Object Identity in LINQ To SQL

Avevo già accennato al concetto di Object Identity in LINQ To SQl tempo fa, ultimamente, parlando di LINQ To SQL, mi diverto a mettere in crisi chi mi ascolta mostrando questo esempio: //Read 'ALFKI' entry from Nothwind... MyDataContext db = new MyDataContext(); Customer cust = db.Customers.Where(c => c.CustomerID == "ALFKI").Single<Customer>(); Console.WriteLine("ALFKI Customer's city is:" + cust.City); //Updates ALFKI City to London string query = "UPDATE Customers SET City={0} WHERE CustomerID={1}"; int ret = db.ExecuteCommand(query, "London", "ALFKI"); Console.WriteLine("{0} record updated", ret); //Queries all customers living in London... Console.WriteLine("Geting customers in London..."); IQueryable<Customer> custInBerlin = db.Customers.Where(c => c.City == "London"); foreach (Customer c in custInBerlin) { Console.WriteLine("{0} lives in {1}",c.CustomerID, c.City); } L'output...

posted @ Sunday, February 3, 2008 11:19 AM | Feedback (3)