Unable to activate Windows Store app: The App.exe process started, but the activation request failed with error ‘The app didn’t start.

Hi,
if you happen at least once to receive this unpleasant message:

“Unable to activate Windows Store app: The App.exe process started, but the activation request failed with error ‘The app didn’t start.

that not allows you to start the Store App, here the possible causes:

1) Download assemblies via Nuget
Nuget in the Windows Store Apps will try to add an app.config in the project, but Windows Store Apps don’t need App.Config.

Solution
Remove App.Config and Deploy App.

2) Change the Package Name in the manifest

Solution
Uninstall App from the Start Screen, delete bin/obj folder and files and then Deploy App.

3) In All other cases

Solution
Uninstall App from the Start Screen, delete bin/obj folder and files and then Deploy App.

Enjoy
Maurizio

Adding DialogMessaging support to ViewModel with MVVM Light in WinRT

In this post I would like to propose a simple solution for DialogMessaging on the UI using MVVM Light Toolkit.

The idea is to use the power of IOC pattern included in the MVVM Light Tookit available free from NuGet.

First of all we need an Interface that allows to define the support to DialogMessaging.
Here an example:

public interface IDialogMessageService
{
	Task ShowAsync(string title, string message);	

	Task ShowAsync(string title, string message, IEnumerable commands);
}

Now we have to move to the implementation:

public class DialogMessageService: IDialogMessageService
{
	public async Task ShowAsync(string title, string message)
	{
		await ShowAsync(title, message, null);
	}

	public async Task ShowAsync(string title, string message, IEnumerable commands)
	{
		var messageDialog = new MessageDialog(message, title);
		if(commands != null)
		{
			foreach(var command in commands)
				messageDialog.Commands(command);
		}
		await messageDialog.ShowAsync();
	}	
}

And then, we need to register this service when the app starts.

So, define the following method in the ViewModelLocator class:

public class ViewModelLocator
{
	public ViewModelLocator()
	{
	     ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
             if (!ViewModelBase.IsInDesignModeStatic)
             { 
		 Registers();
             } 
        }

	public void Registers()
	{
		SimpleIoc.Default.Register<IDialogMessageService, DialogMessageService>();
	}
}

In the viewmodel, where we need the DialogMessageService we use dependency injection in this way:

public class MainViewModel: ViewModelBase
{
	public ICommand ShowMessageCommand{ get; private set;}

	public MainViewModel(IDialogMessageService dialogMessageService)
	{		
		this.ShowMessageCommand = new RelayCommand( async() => 
		{
			await dialogMessageService.ShowAsync("Title", "Hello", null);	
		});
	}
}

And at the end we can use the communication from View - ViewModel with MVVM Design Pattern simply. 🙂

Enjoy
Maurizio

Analytics Tools for Windows Store Apps – XAML

segnalo due potenti strumenti per fare Analitics/Performance delle App per Windows Store.

http://www.distimo.com
tra le svariate funzionalità a disposizione della piattaforma, abbiamo una comoda dashboard completamente configurabile che ci permete di misurare l’andamento di mercato delle App per diversi store (ma a io importa Windows Store) … 🙂
 
https://developer.omniture.com/en_US/content_page/mobile/c-measuring-mobile-applications
 qui invece il focus si sposta maggiormente sull’analisi delle performance del software.  OnLine è disponibile l’SDK e un Quick Start su come utilizzare al meglio le API.

Enjoy!

Maurizio

Using SQLite in Windows 8 Metro Style Apps

Con grande stupore, visto che all’uscita di Windows 8 non era previsto nessun supporto nativo per database, ora è finalmente disponibile una versione del noto database SQLite (precompiled) sia per WinRT che per Windows Phone 8.  🙂

Da ora in poi saremo in grado di sviluppare applicazioni che possono condividere il layer di accesso ai dati basato su SQLite, quindi semplificare l’integrazione tra le due piattaforme: Windows 8 e Windows Phone 8.

Fatta questa premessa, vediamo i passi da seguire per poter integrare SQLite nelle nostre Windows 8 Apps.

Di cosa abbiamo bisogno?

Inanzitutto dobbiamo andare sul sito ufficiale www.sqlite.org alla sezione download scaricare il package per WinRT che si chiama Precompiled Binaries for Windows Runtime ed eseguire l’installazione.

Una volta completata la fase d’installazione possiamo aprire la nostra Windows 8 App e aggiungere la reference al progetto.
Ecco la screenshot:

SQLite ReferenceSe, a questo punto, la nostra applicazione non dovesse compilare, sarebbe dovuto dal fatto che essendo SQLite una libreria di codice nativo dobbiamo impostare dal Configuration Manager di Visual Studio x86 o x64 (e non AnyCPU)  non essendo ancora supportato ARM.


Adesso non ci rimane che scaricare tramite NuGet una libreria chiamata sqlite-net che ci semplifica la vita e fornisce il supporto LINQ per lavorare con i dati e il supporto all’async pattern.
NuGet scaricarà nella root del nostro progetto 2 files: SQLite.cs (supporto sincrono) e SQLiteAsync.cs (supporto asincrono), che sono appunto le classi che ci vengono in supporto per lo sviluppo.

Ora scriviamo del codice:

In questo post vedremo come iniziare a usare SQLite in un App XAML / C#, come creare un database e eseguire delle operazioni CRUD sui dati.

Il primo passaggio è quello di creare un oggetto SQLiteAsyncConnection, o SQLiteConnection (per la versione sicnrona), che identifica la connessione al database.
Ecco un esempio di creazione Db Sincrona:

Ecco un esempio di Creazione Db Asyncrona:
Ora però ci serve almeno una tabella quindi definiamo una classe e andiamo a decorare le Proprietà in questo modo:

In questo esempio possiamo notare alcuni attributi utili per decorare in modoo opportuno la nostra classe:

AutoIncrement: utile per dire a SQLite che quella colonna sarà un numero auto incrementato.
PrimaryKey: serve per identificare una colonna come chiave primaria.

Per creare la tabella appena definita chiamiamo il metodo CreateTableAsync <T>, o CreateTable<T> (per la versione sincrona), per ogni tabella che si desidera creare, dove T è il tipo di dati che andremo a riporre in essa.

Ora ci tocca inserire dei dati e per farlo possiamo usare il metodo InsertAsync, o Insert (nella versione sincrona), che accetta come parametro una istanza di oggetto che andremo a salvare… oppure possiamo usare, in caso di inserimento massivo, InsertAllAsync che accetta come parametro una istanza di un oggetto enumerabile.
Ecco un esempio della versione Asyncrona:
E qui la versione sincrona:

Come si può notare per la versione sincrona ho utilizzato il metodo RunInTransaction che ci permette di scrivere del codice safe e gestire al meglio i nostri dati.

Adesso non ci rimane altro che visualizzare i nostri dati appena inseriti: per farlo possiamo utilizzare il metodo Table<T> e chiamare successivamente  l’extentions ToListAsync (solo nella versione asincrona).
Ecco un esempio della versione asincrona:
E qui la versione sincrona:

….. e ora siamo pronti a integrare SQLite nelle nostre Windows 8 APP! 🙂

Enjoy!

MetroZip App for Windows Store – Release 1

MetroZip
E’ ufficialmente nello store la nuova App MetroZip, l’Applicazione che vi permette di create e gestire i vostri archivi compressi in formato zip con tutta comodità.

Quali sono le nuove funzionalità? MetroZip consentirà di:
– creare un nuovo archivio in formato zip
– aprire un archivio zip
– aggiungere files o folders ad un archivio esistente
– condividere via email o in cloud un archivio
– aprire in preview un file presente in un archivio
– estrarre il conteuto di un arichivio compresso

Ecco il link: http://apps.microsoft.com/webpdp/it-IT/app/metrozipfiles/4c7f9047-e2f4-4a4e-83ae-668ba65ae8f1

Maurizio

Windows 8, WinRT, Debugging DataBinding Error

Ciao,
giusto oggi mi dicevo… perchè nei progetti Windows Store App non abbiamo a disposizione un meccanismo di debugging per le espressioni di Binding ?

Si, possiamo sempre andare a leggere la finestra di Output per analizzare le segnalazioni che il compilatore ci mette a disposizione così da riuscire a risolvere i nostri problemi, ma possiamo, senza troppa fatica utilizzare le informazioni relative all’errore di binding utilizzando la classe DebugSettings e l’evento BindingFailed.

Il delegato che avremo a disposizione ha come argomento la classe BindingFailedEventArgs che a sua volta espone una proprietà Message che ci permetterà di visualizzare le informazioni sull’errore di data binding.

Ecco un esempio:


partial class App : Application
 {
     public App()
     {       
         DebugSettings.BindingFailed += OnBindingFailed;
     }

     private void OnBindingFailed(object sender, BindingFailedEventArgs e)
     {
         Debug.WriteLine(e.Message);
     }
 }

Maurizio

Windows 8, WinRT, Advanced AppBar with vector icons in XAML

Ciao a tutti,
in quest’articolo vorrei proseguire il discorso sull’uso delle icone per l’AppBar.
Anche se sembra difficile, potrebbe capitare di non trovare un’icona adatta alle proprie necessità tra le 150 circa disponibili di default nel template di Visual Studio 2012.

Se appunto, non siamo fortunati nella ricerca dell’icona che fa per noi, possiamo pensare di utilizzare Metro Studio 2 di SyncFusion http://www.syncfusion.com/downloads/metrostudio che al momento viene dato in licenza gratuita al posto di 499$ 🙂

Metro Studio 2 è un software che mette a disposizione, suddivise per categorie, moltissime icone adatte alle nostre applicazioni MetroStyle e quindi per la AppBar.

Ecco una screenshoot di Metro Studio 2:

Una volta trovata l’icona che più si adatta alle nostre esigenze possiamo andare a eseguire diverse personalizzazioni, tra qui: dimensioni, colore di sfondo, rotazione, colore della shape, etc etc… e quando abbiamo completato possiamo esportare lo XAML che è stato generato.

Ecco un esempio di personalizzazione:

Io direi solo WOW!!! 🙂 ci troviamo una icona vettoriale pronta da inserire in uno stile nel nostro ResourceDictionary 🙂

Ecco un esempio di XAML pronto da esportare:

Qui invece un esempio di stile completo:

Se non vogliamo scaricare Metro Studio 2 esiste anche
http://www.thexamlproject.com/ che permette di ricercare icone ed esportare lo XAML… l’unica differenza è che qui non possiamo personalizzare la nostra icona.

Bene, ora vi mostro un esempio dell’AppBar con l’icona “Collaps” preparata in precedenza:

Bene, credo di avervi raccontato tutto per oggi 🙂
Buon divertimento con le icone
Maurizio

Windows 8, WinRT, XAML AppBar with Icon Style

Ciao a tutti,
oggi voglio mostrare come è possibile personalizzare i buttons che andremo ad inserire nella nostra AppBar, in modo da renderli adatti ad una Applicazione MetroStyle.

Le icone/buttons utilizzate in Windows 8 sono frutto del font Segoe UI Symbol, che in sostanza contiene una serie di glifi (in formato unicode) particolarmente indicati da inserire nell’AppBar.

Possiamo vede questi glifi in anteprima, semplicemente utilizzando la Mappa dei Caratteri.
Ecco una screenshot:

Oppure se preferiamo avere un’anteprima reale delle icone, eccole qui enumerate per noi sul blog di Andam Kinney:
http://adamkinney.com/blog/2012/03/05/windows-8-appbarbuttonstyles-enumerated-and-visualized/

Quello che ora dobbiamo fare è definire un set di stili nel nostro ResourceDictionary utilizzando il font Segoe UI Symbol.

Fortunatamente Microsoft ci è venuta incontro per questa necessità .. 🙂

Quando si crea una nuovo progetto con Visual Studio 2012, nella soluzione viene incluso il file di risorsa StandardStyles.xaml, che contiene tutti gli stily/modelli di base per la nostra Applicazione.

Se andiamo ad analizzare meglio il file, al suo interno troviamo già definiti per noi un sottoinsieme di icone pronte all’utilizzo e molte altre che sono commentate.
Ecco un esempio di icona:

Come possiamo notare (questo per tutti gli stili), si basano su AppBarButtonStyle che definisce la forma tonda più tutti i vari stati: pressed,hover,etc,etc …

La prima domanda che viene da porsi è: Perchè le icone sono commentate nel file StandardStyle.xaml?
Credo che Microsoft abbia fatto questa scelta per evitare un file di Risorse molto grande senza che venga fruttato a pieno, in questo modo si agevola il lavoro del parser che non deve prendersi carico di risorse inutili.

Se siamo pratici nell’utilizzo di Blend possiamo andare ad associare gli stili ai nostri buttons utilizzando le
Local Resource in questo modo:

Ora abbiamo tutti gli elementi per realizzare una AppBar in stile MetroStyle tipo questa:

Nell’esempio di AppBar che vi ho mostrato è presente anche un “separator” che serve semplicemente per dividere le sezioni per “argomenti” (passatemi il termine), la possiamo realizzare in questo modo:

Spero vi possa essere di aiuto!
Buon Windows 8 App 🙂
Maurizio