Per strutturare architetturalmente meglio le applicazioni che sviluppiamo con la Universal Windows Platform, spesso facciamo uso di pattern come Model-View-ViewModel (MVVM) che aiutano ad avere una forte separazione tra quella che è la UI e il resto del codice che contiene la logica di business. Uno svantaggio di questo approccio è che alcune proprietà hanno necessità di fare uso dei converter per essere utilizzate correttamente nella UI, richiedendo quindi logica aggiuntiva: un caso noto è quello relativo alle property booleane, usate spesso per mostrare o nascondere contenuti grafici, hanno bisogno necessariamente del classico "BoolToVisibilityConverter", strutturato più o meno come segue:
public class BoolToVisibilityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed; } // ... }
<Grid Visibility="{Binding ViewModel.ShowItems, Converter={StaticResource BoolToVisibilityConverter}}" />
Con l'introduzione di Windows 10, e in particolare dell'Anniversary Update, è stata introdotta anche l'estensione di markup x:Bind di cui abbiamo già parlato in alcuni script precedenti, che in alternativa a Binding viene eseguito in minor tempo e con minor consumo di memoria. La particolarità di questa keyword è che permette di effettuare il casting inline, eliminando di fatto l'esigenza di costruire converter aggiuntivi:
<Grid Visibility="{x:Bind (Visibility)ViewModel.ShowItems}" />
Non solo verrà meno l'esigenza di dover scrivere meno codice, ma il tutto risulterà allo stesso tempo più leggibile.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare una libreria CSS universale: Cards
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Effettuare il refresh dei dati di una QuickGrid di Blazor
C# 12: Cosa c'è di nuovo e interessante
Creare alias per tipi generici e tuple in C#
Aggiornare a .NET 9 su Azure App Service
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Le novità di Angular: i miglioramenti alla CLI
Migliorare l'organizzazione delle risorse con Azure Policy
Gestire gli accessi con Token su Azure Container Registry
Estrarre dati randomici da una lista di oggetti in C#
I più letti di oggi
- Build 2015: segui con noi tutte le novità per gli sviluppatori in diretta da San Francisco
- Speciale Windows Live Services: come integrarli nelle proprie applicazioni
- Rilasciata la RTM di SQL Server 2012, la versione Express subito in download
- Build 2014: tutte le novità per gli sviluppatori in diretta da San Francisco
- .NET Managed provider per MySQL
- WS-I approva Basic Profile 1.0
- Due regali dal Tech-Ed USA 2004: WSE 2.0 e VS 2005 Team System
- VS 2005 e SQL Server 2005 Express da scaricare
- Microsoft aggiorna WinFS beta 1 per VS 2005
- Utilizzare CLEditor per consentire l'input di HTML in ASP.NET MVC