giovedì 19 dicembre 2013

[WP7 - WP8] Er Genius

Vi segnalo che è disponibile l'app Er Genius per la piattaforma Windows Phone.


Scegli una carta dal mazzo ed Er Genius la indovinerà...non ci credi? Prova

mercoledì 18 dicembre 2013

martedì 17 dicembre 2013

[WIN 8] Installare VMWare Player senza disinstallare Hyper-V

Ecco come installare VMWare Player su Win 8 senza dover disinstallare Hyper-V:

  1. Aprire il prompt dei comandi come amministratore: Start - Esegui - cmd (tasto destro Esegui come amministratore)
  2. Eseguire il seguente comando: bcdedit /set hypervisorlaunchtype off
  3. Riavviare il computer
  4. Installare VMWare Player
  5. Per riabilitare Hyper-V: ripetere il punto 1 ed eseguire il seguente comando: bcdedit /set hypervisorlaunchtype auto

sabato 14 dicembre 2013

Clonare un oggetto tramite reflection

Classe utility per clonare un oggetto tramite reflection.

public static object CloneObject(object objSource)
{
    //step : 1 Get the type of source object and create a new instance of that type
    Type typeSource = objSource.GetType();
    object objTarget = Activator.CreateInstance(typeSource);
 
    //Step2 : Get all the properties of source object type
    PropertyInfo[] propertyInfo = typeSource.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
 
    //Step : 3 Assign all source property to taget object 's properties
    foreach (PropertyInfo property in propertyInfo)
    {
        //Check whether property can be written to
        if (property.CanWrite)
        {
            //Step : 4 check whether property type is value type, enum or string type
            if (property.PropertyType.IsValueType || property.PropertyType.IsEnum || property.PropertyType.Equals(typeof(System.String)))
            {
                property.SetValue(objTargetproperty.GetValue(objSourcenull), null);
            }
            //else property type is object/complex types, so need to recursively call this method until the end of the tree is reached
            else
            {
                object objPropertyValue = property.GetValue(objSourcenull);
                if (objPropertyValue == null)
                {
                    property.SetValue(objTargetnullnull);
                }
                else
                {
                    property.SetValue(objTargetCloneObject(objPropertyValue), null);
                }
            }
        }
    }
    return objTarget;
}

venerdì 6 dicembre 2013

[WP7 - WP8] Aggiornamento CarGest 1.0.0.4

Disponibile aggiornamento alla versione 1.0.0.4 per CarGest (Windows Phone).

  • Modifica rifornimento
  • Miglioramenti vari

domenica 1 dicembre 2013

[WP7] Programming Windows Phone 7 by Charles Petzold

Ebook gratuito rilasciato da Charles Petzold riguardante lo sviluppo di applicazioni per la piattaforma Windows Phone 7.


giovedì 31 ottobre 2013

[Kinect] Leggere la lingua dei segni (Continuazione)

Ieri Microsoft ha postato un video che mostra come è possibile leggere e comunicare fra la lingua dei segni americana e la lingua dei segni cinese o potenzialmente qualsiasi lingua dei segni.


Link Video

Articolo precedente

Fonte

martedì 1 ottobre 2013

[WP7 - WP8] Aggiornamento CarGest 1.0.0.3

Disponibile aggiornamento alla versione 1.0.0.3 per CarGest (Windows Phone).

  • Impostazioni unità di misura
  • Miglioramenti vari
Link allo store

lunedì 23 settembre 2013

Errore Nuget -1073741819

Ecco come risolvere il l'errore  -1073741819 di Nuget.
Nuget.exe exited with code -1073741819.


  • Avviare Visual Studio
  • Menu Strumenti -> Gestione pacchetti di librerie -> Impostazioni di Gestione pacchetti
  • Area Cache Pacchetti -> Cliccare su Sfoglia... ed eliminare la cartella della cache di Nuget.

giovedì 19 settembre 2013

[Kinect] Microsoft Kinect SDK 1.8

E' disponibile la versione 1.8 per Microsoft Kinect SDK.

Novità introdotte:

  • Nuova rimozione dello sfondo
  • Cattura realistica dei colori mediante Kinect Fusion 
  • Miglioramento tracking mediante Kinect Fusion
  • Esempio di interazione con HTML5
  • Esempio su come integrare più sensori e Kinect Fusion
  • Esempio di UI che si autoadatta alla distanza dell'utente e alla risoluzione dello schermo
Per conoscere in dettaglio tutte le novità visitare la pagina ufficiale
Download SDK e Toolkit

sabato 14 settembre 2013

[WP7 - WP8] Aggiornamento Facebook Beta 3.1.0.4 - 5.1.0.4

Disponibile aggiornamento alla versione 5.1.0.4 (WP8) e 3.1.0.4 (WP7) per Facebook Beta.


Miglioramenti
  • Maggiore performance


QR Code generator

martedì 10 settembre 2013

[WP7 - WP8] Aggiornamento CarGest 1.0.0.2

Disponibile aggiornamento alla versione 1.0.0.2 per CarGest (Windows Phone).

  • Bug fix backup
  • Gestione promemoria
  • Miglioramenti vari
Link allo store

Visual Studio 2013 RC

Visual Studio 2013 Release Candidate è finalmente disponibile.


Per conoscere tutte le novità visitare questa pagina.
Download

domenica 8 settembre 2013

Implementare INotifyPropertyChanged

Di seguito viene illustrato come implementare l'interfaccia INotifyPropertyChanged per notificare che una proprietà è cambiata.
public class ViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
 
        if (handler != null)
        {
            handler(thisnew PropertyChangedEventArgs(propertyName));
        }
    }
 
    private string miaProprieta;
    public string MiaProprieta
    {
        get { return miaProprieta; }
        set 
        {
            if (miaProprieta != value)
            {
                miaProprieta = value;
                OnPropertyChanged("MiaProprieta");
            }
        }
    }
}

sabato 7 settembre 2013

[WP7 - WP8] Aggiornamento Facebook Beta 3.1.0.3 - 5.1.0.3

Disponibile aggiornamento alla versione 5.1.0.3 (WP8) e 3.1.0.3 (WP7) per Facebook Beta.


Miglioramenti
  • Ottimizzazione touch/reattività
  • Bug scrittura messaggio
  • Possibilità di taggare durante la condivisione dei link
  • Compatibilità con i device con 256 MB RAM (es. Lumia 610)


QR Code generator

venerdì 6 settembre 2013

[Kinect] Coding4Fun Kinect Toolkit 1.7 - use K4W v1.7

Aggiornamento Coding4Fun Kinect Toolkit alla versione 1.7 (funziona solo con la versione 1.7 di Kinect for Windows).

Nuove funzionalità

  • WritableBitmapHelper

[Kinect] Trasforma il bagno in un liquido touchscreen gigante con AquaTop Display

Un gruppo di ricercatori ha ideato un touchscreen per la vasca da bagno. Di cosa abbiamo bisogno? Semplicemente di un sensore Kinect e di un proiettore.


Acquatop display facilita l'interazione con gli oggetti virtuali utilizzando le mani...guarda il video su YouTube.

Sito ufficiale

mercoledì 4 settembre 2013

[WP8] Aggiornamento Skype 2.10.0.251

Disponibile aggiornamento alla versione 2.10.0.251 per Skype (Windows Phone 8).



  • Videomessaggi
Link allo store

QR Code generator

[WP8] Wreck-It Ralph

Disponibile il gioco Ralph Spaccatutto per la piattaforma Windows Phone 8.


 Il gioco è composto da 5 giochi:
  • Fix-it Felix Jr.
  • Hero's Duty
  • Sweet Climber
  • Turbo Time
  • Flight Command
Prezzo: 0.99€

Link allo store

QR Code generator

Raccolta di oltre 1500 Moder Icons

Raccolta di oltre 1500 icone da utilizzare per sviluppo su piattaforma Windows Phone o Windows 8 (Merto UI).
Tutte le icone sono organizzate in 29 categorie e possono essere utilizzate in PNG e/o da codice XAML/HTML.


Le categorie sono le seguenti:
 Sito ufficiale

sabato 31 agosto 2013

[WP7 - WP8] Aggiornamento Facebook Beta 5.1.0.2

Disponibile aggiornamento alla versione 5.1.0.2 per Facebook Beta. Da oggi è disponibile anche per Windows Phone 7.

martedì 27 agosto 2013

[WP7 - WP8] Aggiornamento CarGest 1.0.0.1

Disponibile aggiornamento alla versione 1.0.0.1 per CarGest (Windows Phone).

  • Bug fix posizione del rifornimento
  • Miglioramenti vari
  • Lingua inglese
Link allo store

mercoledì 21 agosto 2013

[WP8] Aggiornamento Facebook Beta 5.1.0.1

Disponibile aggiornamento alla versione 5.1.0.1 per Facebook Beta (Windows Phone 8).



  • Miglioramento dei tag, chat, prestazioni, interfaccia grafica
  • Possibilità di allegare  immagini nei messaggi
  • Salvataggio e condivisione delle foto
  • Visualizzatore nuove notizie
Link allo store

lunedì 19 agosto 2013

[WP7] Abilitare/Disabilitare bottoni dell'ApplicationBar

Metodo esteso per abilitare/disabilitare tutti i bottoni dell'ApplicationBar:

public static class ApplicationBarUtility
{
    public static void SetButtonState(this IApplicationBar app, bool state)
    {
        if (app == nullreturn;
 
        app.IsMenuEnabled = state;
 
        foreach (ApplicationBarIconButton btn in app.Buttons)
        {
            btn.IsEnabled = state;
        }
    }
}

giovedì 15 agosto 2013

[WP7 - WP8] Aggiornamento WhatsApp 2.11.59

Disponibile aggiornamento alla versione 2.11.59 per WhatsApp (Windows Phone).



  • Miglioramenti messaggi vocali
  • Bug fix vari

mercoledì 14 agosto 2013

[WP7 - WP8] CarGest

App per gestire al meglio le spese della tua macchina



Funzionalità:
-Anagrafiche: tipi di rifornimento, veicoli, categorie manutenzione, categorie uscita
-Gestione rifornimenti
-Mappa rifornimenti
-Gestione manutenzioni
-Gestione uscite generiche
-Gestione promemoria
-Backup/Restore su SkyDrive

Link allo store

martedì 6 agosto 2013

[WPF] Riavviare applicazione

Riavviare applicazione WPF

System.Windows.Forms.Application.Restart();
System.Windows.Application.Current.Shutdown();

domenica 4 agosto 2013

Coding4Fun Toolkit 2.0.7

Versione 2.0.7 di Coding4Fun Toolkit rilasciata

New/Adjustments


  • SafeDispatcher.Run was added.
  • IsTypeOf extension now will work with stuff other than UI controls
  • Moved IsDesignMode to ApplicationSpace, will deprecate old reference next push
  • Moved CheckBounds to a number of helper extension class, will deprecate old reference next push
  • Added TimeSpan, Int, Double, Float extension helpers for CheckBounds, AlmostEquals
  • Added Numbers.Min, Numbers.Max for wrappers to Linq query for non-array wrapped numbers.
  • Deprecate the old nuget packages from Coding4Fun.Phone time frame, they should auto update now. I kept forgetting to hide them.
  • ImageTile - now have bitmaps with a delay create and background create
  • ApplicationSpace.RootFrame - direct reference to root frame of the application


Bug Fixes


  • TimeSpanPicker - DialogTitle works again
  • TimeSpanPicker - Max is now enforced for during initial set.
  • ChatBubbleTextBox - Fixed margin error
  • LockScreenPreview - text viewable in light theme
  • MemoryCounter - DispatcherTImer wasn't being properly destroyed
  • MemoryCounter - FrameNavigated getting called on leaving and reentering
  • ImageTile - FrameNavigated getting called on leaving and reentering
  • Designer Theme Change ObjectDisposedException bug fixed. Occurred when you flipped between Light and Dark theme

venerdì 2 agosto 2013

[WP7] Aggiungere/Aggiornare/Rimuovere LiveTile a Start

Esempio che spiega come aggiungere/rimuovere le LiveTile a Start.

internal enum Operation
{
    Add,
    Remove
}
 
public partial class MainPage : PhoneApplicationPage
{
    private void LiveTile(Operation operation)
    {
        const string TITLE = "LiveTile";
 
        ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("TuoParametro=" + TITLE));
 
        switch (operation)
        {
            //Aggiungo/Aggiorno LiveTile
            case Operation.Add:
                StandardTileData liveTile = new StandardTileData
                {
                    Title = TITLE,
                    BackgroundImage = new Uri("Background.png"UriKind.RelativeOrAbsolute),
                    BackBackgroundImage = new Uri("BackBackground.png"UriKind.RelativeOrAbsolute),
                    Count = 0,
                    BackTitle = "LiveTile 1.0",
                    BackContent = "Esempio LiveTile",
                };
 
                if (tile == null)
                {
                    //LiveTile non esistente -> Aggiugno a start
                    try
                    {
                        ShellTile.Create(new Uri("/MainoPage.xaml?TuoParametro=" + liveTile.Title, UriKind.Relative), liveTile);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
                else
                {
                    //LiveTile esistente -> Aggiorno
                    tile.Update(liveTile);
                }
                break;
            //Rimuovo LiveTile
            case Operation.Remove:
                if (tile != null)
                {
                    //LiveTile esistente -> Rimuovo
                    try
                    {
                        tile.Delete();
                        MessageBox.Show("LiveTile rimossa correttamente");
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message); ;
                    }
                }
                break;
        }
    }

    public MainPage()
    {
        InitializeComponent();
    }
 
    private void btnAggiungi_Click(object sender, RoutedEventArgs e)
    {
        LiveTile(Operation.Add);
    }
 
    private void btnRimuovi_Click(object sender, RoutedEventArgs e)
    {
        LiveTile(Operation.Remove);
    }
}

NB: Per le due immagini (Background.png e BackBackground.png) settare la proprietà Operazione di compilazione come Contenuto

giovedì 1 agosto 2013

Phoenix Protector

Phoenix Protector è un tool free per offuscare gli assembly .NET. Consente di offuscare nomi, stringhe ed il flusso di controllo.


Funzionalità

  • Interfaccia progetti
  • Offuscamento nomi con lista per le esclusioni
  • Offuscamento di stringhe
  • Offuscamento flusso di controllo
  • Utility per il merge degli assebmly


Per maggiori informazioni riguardanti funzionalità e modalità di utilizzo visitare il Sito ufficiale

mercoledì 31 luglio 2013

[WP7] Path to BitmapImage

Codice per ottere una BitmapImage a partire da un path.

public static BitmapImage ImageFromPath(string path)
{
    Uri imgUri = new Uri(path, UriKind.Relative);
    StreamResourceInfo imageResource = Application.GetResourceStream(imgUri);
    BitmapImage image = new BitmapImage();
    image.SetSource(imageResource.Stream);
    return image;
}

Il path dovrà essere così composto: <NomeProgetto>;component/Path/NomeImmage

lunedì 29 luglio 2013

Ottenere IP Locale

IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
 
string mioIP = host.AddressList.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork).ToString();

sabato 27 luglio 2013

[WPF-SL-Win8] Modern UI (Metro) Charts per Windows 8, WPF, Silverlight

Progetto open source che ci pemette di creare dei grafici in stile metro nella applicazione per Windows 8, WPF e Silverlight.

Grafici disponibili

  • ColumnChart (ClusteredColumnChart, StackedColumnChart, StackedColumnChart100Percent)
  • PieChart (PieChart and Dognut)
  • BarChart (ClusteredBarChart, StackedBarChart, StackedBarChart100Percent)
  • Doughnut Chart
  • Radial Gauge Chart
E' possibile visualizzare un esempio in Silverlight al seguente link

Sito ufficiale

giovedì 25 luglio 2013

[WP7 - WP8] CarGest (Beta)

Vi segnalo un'app in versione beta: CarGest (per gestire tutte, o quasi, le spese delle vostre auto).


Funzionalità:

  1. Anagrafiche: Tipi rifornimento, Veicoli, Categorie manutenzione, Categorie uscita
  2. Rifornimenti
  3. Manutenzioni
  4. Uscite
  5. Backup/Restore tramite SkyDrive

Link allo store

Mandate una mail a ken_1986@hotmail.it per essere abilitati al download

mercoledì 24 luglio 2013

Programmazione asincrona con Async ed Await in C# 4.5

Piccolo esempio sulla programmazione asincrona con le nuove parole chiave del .Net Framework 4.5: async ed await.

C#

public partial class MainWindow : Window
{
    private int Compute()
    {
        int somma = 0;
        for (int i = 0i < 10000i++)
        {
            somma += i;
            Console.WriteLine(i);
        }
 
        return somma;
    }
 
    private Task<int> ComputeAsync()
    {
        return Task.Run(() => Compute());
    }
 
    public MainWindow()
    {
        InitializeComponent();
    }
 
    private void btnCompute_Click(object senderRoutedEventArgs e)
    {
        Console.WriteLine("Elaborazione in corso...");
        int somma = Compute();
        Console.WriteLine("Elaborazione terminata: " + somma);
    }
 
    private async void btnComputeAsync_Click(object senderRoutedEventArgs e)
    {
        Console.WriteLine("Elaborazione async in corso...");
        int somma = await ComputeAsync();
        Console.WriteLine("Elaborazione async terminata: " + somma);
    }
}

 

XAML

<Window x:Class="TestWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Async/Await C# 4.5" Height="184.831" Width="346.723">
    <Grid>
        <Button Content="Compute" HorizontalAlignment="Left" Margin="38,53,0,0" VerticalAlignment="Top" Width="97" Name="btnCompute" Click="btnCompute_Click"/>
        <Button Content="Compute async" HorizontalAlignment="Left" Margin="171,53,0,0" VerticalAlignment="Top" Width="97" Name="btnComputeAsync" Click="btnComputeAsync_Click"/>
    </Grid>
</Window>

Nell'esempio abbiamo i due metodi:
  • Compute(): metodo sincrono
  • ComputeAsync(): metodo asincrono (per convezione un metodo asincrono termina col suffisso Async), che restituisce un tipo Task<TResult> (Task<int> nel nostro caso). Se il metodo asincrono non deve ritornare nessun tipo basta mettere solo Task.
Il metodo che richiama ComputeAsync() è contrassegnato dalla parola chiave async ed attende il suo terminamento mediante await.

Per approfondire l'argomento vi rimando al sito ufficiale dell'MSDN

martedì 23 luglio 2013

Testare se una collection è nulla o vuota (IsNullOrEmpty)

Metodo esteso che consente di testare se una collection è nulla o vuota (IsNullOrEmpty).

public static bool IsNullOrEmpty<T>(this Collection<T> collection)
{
    return collection == null || (collection != null && collection.Count() == 0);
}

lunedì 22 luglio 2013

[Kinect] Leggere la lingua dei segni

Mediante la kinect è possibile leggere la lingua dei segni (la lingua dei segni è una lingua che veicola i propri significati attraverso un sistema codificato di segni delle mani, espressioni del viso e movimenti del corpo. Fonte: Wikipedia).




Sito ufficiale

[WPF] Command

I Command vengono utilizzati per evitare di assegnare un determinato comportamento direttamente al controllo e per riutilizzare semplicemente le funzionalità di un'applicazione.
Esempio su come utilizzarli:

C#

public MainWindow()
{
    InitializeComponent();
}
 
private void Comando_CanExecute(object senderCanExecuteRoutedEventArgs e)
{
    //Condizione per determinare se eseguire o meno il comando
    e.CanExecute = textBox1.Text == "ok";
    e.Handled = true;
}
 
private void Comando_Execute(object senderExecutedRoutedEventArgs e)
{
    e.Handled = true;
    MessageBox.Show("Command in WPF");
}

XMAL

<Window x:Class="TestWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Command in WPF" Height="184.831" Width="346.723">
    <Window.Resources>
        <RoutedUICommand x:Key="Comando" />
    </Window.Resources>
    <Window.CommandBindings>
        <CommandBinding Command="{StaticResource Comando}" CanExecute="Comando_CanExecute" Executed="Comando_Execute" />
    </Window.CommandBindings>
    <Grid>
        <TextBox HorizontalAlignment="Left" Height="23" Margin="10,23,0,0" TextWrapping="Wrap" Name="textBox1" VerticalAlignment="Top" Width="120"/>
        <Button Content="Button" HorizontalAlignment="Left" Margin="149,23,0,0" VerticalAlignment="Top" Width="75" Command="{StaticResource Comando}"/>
    </Grid>
</Window>


venerdì 19 luglio 2013

[WP7] Leggere coordinate GPS

Leggere le coordinate GPS da un dispositivo Windows Phone 7.

using (var watcher = new GeoCoordinateWatcher())
{
    if (watcher.Permission == GeoPositionPermission.Granted)
    {
        watcher.TryStart(falseTimeSpan.FromSeconds(2));
 
        if (!watcher.Position.Location.IsUnknown)
        {
            latitudine = watcher.Position.Location.Latitude;
            longitudine = watcher.Position.Location.Longitude;
        }
 
        watcher.Stop();
    }
    else
    {
        MessageBox.Show("Non si dispone dei permessi");
    }
}

giovedì 18 luglio 2013

Modern UI Icons

Modern UI Icons è una raccolta di icone per applicazioni in stile Metro tutte realizzate mediante Expression Design.


Il pacchetto include:
  • Icone
  • Sorgenti per Expression Design
  • Icone per App Bar Windows Phone nel formato 76x76 pixel
  • Vettoriali XAML & SVG
Sito ufficiale





martedì 16 luglio 2013

[WPF] ContextMenu DataGridRow

Ecco come creare un ContextMenu per DataGridRow:

<DataGrid>
    <DataGrid.RowStyle>
        <Style TargetType="{x:Type DataGridRow}">
            <Setter Property="ContextMenu">
                <Setter.Value>
                    <ContextMenu>
                        <MenuItem Header="Nuovo" VCommand="{StaticResource nuovo}">
                            <MenuItem.Icon>
                                <Image Source="/Images/nuovo.png" Height="24"/>
                            </MenuItem.Icon>
                        </MenuItem>
                        <MenuItem Header="Elimina" Command="{StaticResource elimina}">
                            <MenuItem.Icon>
                                <Image Source="/Images/elimina.png" Height="24"/>
                            </MenuItem.Icon>
                        </MenuItem>
                    </ContextMenu>
                </Setter.Value>
            </Setter>
        </Style>
    </DataGrid.RowStyle>
</DataGrid>