Xaml

WPF e l'ereditarietà degli stili

Gli Style di WPF sono certamente uno strumento molto comodo. Una caratteristica interessante degli Style è che uno ne può estendere un altro. Supponiamo di avere la seguente definizione: <Style x:Key="MainControlStyle" TargetType="{x:Type Control}" > <Setter Property="FontSize" Value="10" /> <Setter Property="FontWeight" Value="Normal" /> <Setter Property="Padding" Value="2" /> </Style> <Style TargetType="{x:Type Label}" BasedOn="{StaticResource MainControlStyle}" > <Setter...

WPF - Usare più file di risorse

Può capitare di volere fare riferimento a più file di risorse all'interno di una Window o di uno UserControl e farli magari convivere con le risorse definite localmente. La classe ResourceDictionary ci viene incontro con la proprietà MergedDictionary. <Window.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="../../MainResources.xaml" /> <ResourceDictionary Source="../../Styles.xaml" /> </ResourceDictionary.MergedDictionaries> <DataTemplate x:Key="MyTemplate"> ...

Caricare un Template in modo condizionale

Come avevo anticipato nel post precedente vorrei esporre un tip per poter selezionare un template per rappresentare un determinato dato in base ad una condizione. Supponiamo di avere una situazione simile al post precedente, in cui ho un ViewModel che mi rappresenta un ordine: OrderViewModel. Voglio rappresentare OrderViewModel in tre modi diversi in base al fatto che esso rappresenti la scheda di un ordine, un ordine in modifica o un ordine nuovo. Per fare ciò implemento tre View diverse con tre UserControl e le associo ad altrettanti ControlTemplate nel seguente modo: <ControlTemplate x:Key="OrderDetailTemplate"...

WPF in salsa MVVM e i template

Uno degli aspetti di WPF che più mi piace sono i template. Qui si trova una panoramica su ciò che si può fare. I DataTemplate sono molto comodi quando usiamo MVVM; a parer mio, sono la risposta alla domanda: "Bene ora ho il ViewModel e la View. Come li relaziono tra loro?". Come funzionano? Tramite i DataTemplate puoi creare una associazione tra uno specifico tipo di dato ed un template che lo rappresenta. Facciamo qualche esempio: supponiamo di avere un ViewModel di tipo CustomerViewModel e di volerlo associare alla sua View, uno UserControl chiamato CustomerDetailView; potremmo scrivere qualcosa...

WPF DataGrid e aggiunta di righe ad ItemSource

Un piccolo tip per mostrare una riga di aggiunta elemento nella DataGrid del WPF Control Toolkit. Ho una DataGrid il cui ItemSource è bindato ad una proprietà di tipo ObservableCollection<MioTipo>; inoltre la proprietà CanUserAddRows è impostata a True. Qualcosa di questo tipo insomma: <ToolKit:DataGrid AutoGenerateColumns="False" CanUserAddRows="True" CanUserSortColumns="True" Margin="5,5,5,5" Name="Items" ItemsSource="{Binding Path=OrderItems}"> <ToolKit:DataGrid.Columns> ... </ToolKit:DataGrid.Columns> </ToolKit:DataGrid> Ebbene la...

WPF Binding

La prima cosa del Binding di WPF che mi ha piacevolmente colpito è la possibilità di gestire le 'dipendenze' tra due controlli: ovvero di poter rendere il contenuto di un controllo dipendente dallo stato di un altro controllo. Faccio un piccolo esempio. Supponiamo di volere creare una lista di elementi al quale abbiamo associato una nota, che vogliamo visualizzare all'interno di una TextBox. Per fare ciò basta poco codice Xaml: <DataGrid Name="ElementsList"...> ... </DataGrid> <TextBox Name="txtNote" Text="{Binding Path=SelectedItem.Value, ElementName=ElementsList}" /> In questo modo non dobbiamo preoccuparci di gestire eventi particolari per popolare la nostra TextBox. Ogni volta che selezioniamo...