Condividi tramite


Cenni preliminari sulle applicazioni Windows Presentation Foundation ospitate su Windows Media Center

Aggiornamento: novembre 2007

Microsoft Windows Media Center (WMC) è un'applicazione per l'intrattenimento multimediale digitale installata con Windows Vista Home Premium Edition, Windows Vista Ultimate e Microsoft Windows XP Media Center Edition 2005. WMC consente agli utenti di gestire e utilizzare un'ampia gamma di supporti multimediali, tra cui televisione (digitale e ad alta definizione), DVD, musica, video, radio e foto.

Schermata di Windows Media Center

Oltre alle funzionalità TV, è possibile utilizzare WMCPC per visualizzare e riprodurre contenuti multimediali digitali. Questa possibilità è nota come esperienza utente da PC, poiché gli utenti azionano WMC tramite PC, utilizzando mouse, tastiera e monitor.

Tuttavia, è possibile configurare un PCWMC in modo da supportare input da telecomando o tastiera a distanza. In questo caso, non è necessario che gli utenti si trovino al PCWMC per utilizzare l'applicazione. Questa possibilità è nota come esperienza utente a distanza, adatta per configurazioni WMC che includono monitor di grandi dimensioni e hardware per l'intrattenimento domestico tradizionale, quali televisioni e sistemi audio.

La funzionalità principale offerta da WMC include un insieme di applicazioni per la gestione e la riproduzione di contenuti multimediali digitali. Tuttavia, è possibile utilizzare WPF per creare applicazioni personalizzate per le versioni Windows Vista di WMC.

In questo argomento viene fornita un'introduzione allo sviluppo di applicazioni WPF per WMC e vengono analizzati i seguenti aspetti:

  • Compilazione e distribuzione di una semplice applicazione di gioco WPF.

  • Analisi delle esperienze utente WMC da PC e a distanza.

  • Personalizzazione dei controlli WPF per il supporto di WMC.

  • Utilizzo di nuovi controlli specifici di WMC per WPF.

  • Utilizzo del supporto in .NET Framework.

  • Integrazione con WMC tramite API gestite

  • Utilizzo di Visual Studio 2005 per migliorare il processo di sviluppo.

Per informazioni complete sullo sviluppo di applicazioni per WMC, vedere Windows Media Center Software Development Kit (WMC SDK).

Nel presente argomento sono contenute le seguenti sezioni.

  • Hosting di applicazioni WPF in WMC
  • Avvio di un'applicazione WPF per WMC
  • Esperienza utente di WMC
  • Aggiornamento dei controlli WPF per WMC
  • Controlli WPF aggiuntivi per WMC
  • Utilizzo delle librerie di classi di .NET Framework 3.0
  • Integrazione con API gestite WMC
  • Sviluppo con Visual Studio
  • Installazione di un'applicazione WPF per WMC
  • Argomenti correlati

Hosting di applicazioni WPF in WMC

WPF consente lo sviluppo di due tipi di applicazioni: autonome e ospitate da browser. Nelle applicazioni autonome sono presenti finestre e finestre di dialogo per ospitare il contenuto dell'applicazione. Esistono due tipi di applicazioni ospitate da browser, applicazioni XAML separate e XBAP, entrambe ospitate da Internet Explorer 7. Tuttavia, Internet Explorer 7 non supporta il contenuto WPF. Per consentire l'utilizzo di contenuto WPF in Internet Explorer 7, in WPF viene fornito un proxy di hosting ad applicazioni come Internet Explorer. Il proxy è in grado di ospitare contenuto WPF per conto di altre applicazioni e viene compilato utilizzando la stessa infrastruttura Windows comune che può essere ospitata in Internet Explorer.

WMC è inoltre in grado di ospitare il proxy e, di conseguenza, può ospitare applicazioni WPF ospitate da browser. Pertanto è, in genere, possibile sfruttare la piattaforma di sviluppo delle applicazioni WPF e, in particolare, le funzionalità di spostamento e sicurezza delle applicazioni ospitate da browser.

Nella parte restante di questo argomento viene utilizzata l'applicazione WordGame! per WMC (vedere Demo dell'applicazione WordGame per Windows Media Center).

Avvio di un'applicazione WPF per WMC

L'applicazione WordGame! è costituita dai tre file riportati di seguito (il minimo per tutte le XBAP):

  • wordgamewmc.exe. Campo XBAP.

  • wordgamewmc.exe.manifest. Manifesto dell'applicazione ClickOnce.

  • wordgamewmc.xbap. Manifesto di distribuzione di ClickOnce.

Le XBAP vengono avviate utilizzando ClickOnce, che richiede la configurazione dell'applicazione con i file manifesto di applicazione e di distribuzione (vedere Compilazione di un'applicazione WPF). In particolare, un'applicazione XBAP viene avviata quando ci si sposta sul relativo file xbap o si fa doppio clic su di esso. All'avvio, il comportamento predefinito prevede il download dell'applicazione tramite ClickOnce per conto di WPF, quindi l'avvio di Internet Explorer tramite WPF e lo spostamento sull'applicazione, come illustrato nella figura seguente:

Schermata di WordGame

Per avviare un'applicazione WMC, tuttavia, gli utenti si spostano o fanno doppio clic su un file di collegamento di WMC (estensione mcl). Un file mcl è un file di configurazione XML configurato in Windows per l'apertura dall'host WMC, (ehshell.exe) quando ci si sposta o si fa doppio clic su di esso (vedere WMC SDK).

Nota

.I file mcl sono utili nel processo di sviluppo, ma non è consigliabile utilizzarli per l'installazione e l'avvio di applicazioni WMC. Vedere Installazione di un'applicazione WPF per WMC.

Quando si apre un file mcl, l'host WMC analizza ed elabora le istruzioni di configurazione di tale file, la più importante delle quali è il nome dell'applicazione da aprire. Utilizzare questo meccanismo per creare un file mcl configurato per l'avvio di un'applicazione XBAP:

<application url="https://localhost/wordgamewmc/wordgamewmc.xbap" />

Quando l'host WMC elabora questo file mcl, WMC si sposta sul file xbap, con il conseguente avvio dell'applicazione da parte di ClickOnce nell'host WMC stesso, come illustrato nella figura seguente:

Schermata di WordGame

Nota

Per ospitare un'applicazione XAML separata in WMC, è necessario configurare il file mcl con un file xaml, come illustrato di seguito:

<application
  url="https://localhost/loosexamlapplication/loosexamlpage.xaml" />

Senza apportare modifiche all'applicazione XBAP stessa e con l'agginuta di un solo file di configurazione, è possibile ospitare in WMC un'applicazione WPF ospitata da browser.

Tuttavia, poiché l'esperienza utente di WMC è specifica, per ragioni di coerenza e di stile è importante considerare l'integrazione di tale esperienza nella progettazione delle applicazioni XBAPWMC. Nella parte restante di questo argomento vengono analizzati gli aspetti principali dell'esperienza utente di WMC e viene illustrato come compilare le XBAP in modo da integrarla.

Esperienza utente di WMC

Offrire un'esperienza utente coerente è fondamentale nello sviluppo di qualsiasi applicazione. Per gli utenti di WMC, è essenziale che un'applicazione sia coerente nei modi seguenti:

  • Tema. Lo stile complessivo dell'interfaccia utente di un'applicazione.

  • Layout. Posizione e dimensioni dei controlli.

  • Spostamento. Utilizzo della tastiera, del mouse e del telecomando per spostarsi nell'interfaccia utente di un'applicazione.

Sebbene un'analisi dettagliata dell'esperienza utente di WMC sia disponibile in WMC SDK, negli argomenti riportati di seguito vengono forniti cenni preliminari di livello avanzato.

Tema

Come è possibile vedere dalla figura riportata di seguito, il tema di WMC presenta vari elementi distinti:

Schermate di Windows Media Center

I più evidenti includono uno sfondo blu vitreo e tipi di carattere arrotondati di grandi dimensioni di colore chiaro. L'obiettivo è creare un aspetto facilmente riconoscibile sia dagli utenti da PC, che si trovano davanti a un monitor, sia dagli utenti a distanza, che possono trovarsi più o meno distanti da un televisore. Sebbene nelle applicazioni WPF venga tenuto in considerazione questo approccio generale relativo all'aspetto, WMC non espone queste informazioni in modo nativo per l'utilizzo da parte delle applicazioni WPF. Fortunatamente, in WPF è disponibile un'infrastruttura dettagliata per gli stili e i temi che può essere utilizzata per riprodurre con facilità l'aspetto di WMC, se lo si ritiene opportuno. In alternativa, è possibile utilizzare WPF per offrire un'esperienza utente completamente nuova e visivamente efficace, pur tenendo in considerazione gli aspetti relativi al layout e allo spostamento.

Ad esempio, per creare uno sfondo in stile WMC per le pagine, è possibile eseguire le operazioni seguenti:

<Application
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="HomePage.xaml">
  <!--MediaCenterThemes.xaml-->
  <Application.Resources>
    <LinearGradientBrush x:Key="PageGlassyBackground"  StartPoint="0,0.5" EndPoint="1,0.5">
      <GradientStop Color="#ff2B6680" Offset="1.5" />
      <GradientStop Color="#569dc2" Offset="0" />
    </LinearGradientBrush>
    ...
  </Application.Resources>
</Application>

Poiché i temi sono in genere composti da più elementi, è opportuno considerare l'utilizzo di un dizionario risorse personalizzato per incapsulare gli stili del tema di WMC:

<ResourceDictionary>
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" />
  <LinearGradientBrush x:Key="PageGlassyBackground"  StartPoint="0,0.5" EndPoint="1,0.5">
    <GradientStop Color="#ff2B6680" Offset="1.5" />
    <GradientStop Color="#569dc2" Offset="0" />
  </LinearGradientBrush>
  ...
</ResourceDictionary>

Per incorporare un dizionario risorse in un'applicazione, configurare l'elemento Application.Resources della definizione dell'applicazione affinché faccia riferimento al file xaml del dizionario risorse:

<Application
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    StartupUri="HomePage.xaml">
  <!--MediaCenterThemes.xaml-->
  <Application.Resources>
    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="MediaCenterTheme.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>
</Application>

Nella figura riportata di seguito viene illustrato WordGame! aggiornato con un complemento completo di stili e risorse per il tema di WMC.

Schermata di WordGame

WMC non impedisce lo sviluppo di temi per le applicazioni che incorporino elementi specifici dell'applicazione e del produttore. Tuttavia, nella progettazione di un'applicazione per l'esperienza utente WMC, è necessario considerare numerosi aspetti del tema di un'applicazione, inclusi:

  • Colori adatti alla televisione: non utilizzare colori brillanti che possono essere soggetti a frangiatura (ad esempio verde, rosso).

  • Contrasto: per mantenere il testo visivamente distinto dallo sfondo, accertarsi che la scelta dei colori di primo piano e di sfondo per gli elementi visivi abbia un livello di contrasto adeguato.

  • Tipi di carattere: è possibile migliorare la leggibilità utilizzando tipi di carattere di dimensioni maggiori senza grazie. Inoltre, la rimozione di frasi non necessarie dal contenuto può favorire la creazione di aree di testo di più facile lettura.

  • Pulsanti: mantenere semplice l'aspetto dei pulsanti.

  • Immagini: al momento della creazione di immagini, considerare la qualità e le dimensioni di visualizzazione e le dimensioni di download.

  • Animazione: utilizzare questa funzionalità in modo appropriato.

Per informazioni dettagliate relative ai temi delle applicazioni WMC, vedere WMC SDK.

Layout

Quando un utente fa scorrere il mouse sull'host WMC si verifica un problema non immediatamente rilevabile, ovvero la visualizzazione nell'host di WMC di altri elementi dell'interfaccia utente per lo spostamento controllato dal mouse, come illustrato nella figura seguente:

Schermata dell'esempio WordGame

Da questa figura, è possibile osservare che le parti dell'interfaccia utente dell'applicazione in alto a sinistra e in basso a destra sono nascoste dal riquadro di spostamento. In questa situazione, è possibile aggiornare il layout dell'interfaccia utente per tenere conto dell'interfaccia utente di spostamento. In WordGame!, questa operazione presuppone lo spostamento del titolo dell'applicazione a destra dell'interfaccia utente e l'aggiunta di una riga alta 50 pixel nella parte inferiore dell'elemento Grid che ospita il contenuto sulla home page:

<Grid>
    ...
    <Grid.RowDefinitions>
        <RowDefinition Height="5" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="20" />
        <RowDefinition Height="Auto" />
        <RowDefinition />
        <RowDefinition Height="50" />
    </Grid.RowDefinitions>
    <!-- Game title -->
    <TextBlock ... TextAlignment="Right">Word Game!</TextBlock>
    ...
</Grid>

L'effetto dell'aggiunta di queste righe viene illustrato nella figura riportata di seguito:

Schermata dell'esempio WordGame

Per questo motivo, è necessario che le XBAP per WMC siano sensibili ai diversi comportamenti e alle uniformità del layout di WMC.

Di seguito vengono riportate le principali considerazioni sul layout da considerare:

  • Layout delle applicazioni: il layout delle applicazioni deve essere semplice e coerente, per semplificare agli utenti lo sviluppo e l'acquisizione di familiarità con l'interfaccia utente dell'applicazione.

  • Layout di WMC: il layout delle applicazioni deve garantire la coerenza con l'esperienza utente generale di WMC, ove possibile. In questo modo è possibile consentire agli utenti che conoscono WMC di acquisire più rapidamente familiarità con l'applicazione.

  • Video: se nell'applicazione viene visualizzato contenuto video tramite API gestite di WMC, il video verrà riprodotto in WMC nella parte inferiore sinistra dello schermo. Pertanto, è necessario tenere conto di questa condizione nel layout dell'interfaccia utente.

  • Risoluzione: l'interfaccia utente e il layout dell'applicazione devono essere creati per una risoluzione di 1024x768. In WPF è disponibile supporto di layout per agevolare l'impostazione dell'interfaccia utente sul valore di destinazione di 1024x768 e garantire il mantenimento del layout al momento del ridimensionamento dell'interfaccia utente. Per ulteriori informazioni, vedere Sistema di layout.

Per informazioni dettagliate sul layout di WMC, vedere WMC SDK.

Spostamento

Tema e layout impongono essenzialmente la modalità di disposizione dei controlli dell'interfaccia utente dell'applicazione. Lo spostamento, d'altra parte, impone la modalità di accesso e spostamento tra i controlli da parte degli utenti.

Un controllo che, in un determinato momento, riceve input da parte dell'utente, riceve lo stato attivo. Per assegnare lo stato attivo a un controllo specifico quando viene visualizzata una pagina nell'applicazione XBAP, è possibile utilizzare il markup:

<!-- Set focus on guess character text box -->
<Page ... FocusManager.FocusedElement="{Binding ElementName=guessedChar}">
    ...
</Page>

È necessario eseguire questa operazione per supportare le modalità operative da PC e a distanza.

Per consentire agli utenti di spostarsi tra i controlli in un'applicazione WMC in modalità da PC e a distanza, è necessario che l'applicazione gestisca lo spostamento tramite mouse, tastiera (collegata o a distanza) e telecomando. Per impostazione predefinita, lo spostamento con mouse e tastiera è uguale a quello in qualsiasi applicazione WPF, incluse le operazioni seguenti:

  • Selezione dei controlli per spostare lo stato attivo su di essi.

  • Tabulazione tra i controlli per spostare lo stato attivo.

  • Utilizzo della proprietà IsDefault di un pulsante per specificare che venga selezionato per impostazione predefinita alla pressione del tasto Invio.

  • Utilizzo della proprietà IsCancel di un pulsante per specificare che venga selezionato per impostazione predefinita alla pressione del tasto Esc.

Per il supporto dei telecomandi, è necessario supportare lo spostamento direzionale, ovvero la possibilità degli utenti di spostare lo stato attivo dei controlli facendo clic sui pulsanti su, giù, sinistra e destra del telecomando. Non è necessario scrivere codice speciale per supportare lo spostamento direzionale, a condizione che si utilizzi un sottoinsieme specifico di controlli WPF.

Aggiornamento dei controlli WPF per WMC

Sebbene WPF offra numerosi controlli, solo un sottoinsieme di essi è adatto all'utilizzo nelle applicazioni WMC per impostazione predefinita. Il fattore determinante consiste nello stabilire se è possibile o meno utilizzare un telecomando per spostarsi tra tali controlli e per modificarli. Nella figura riportata di seguito viene visualizzato un sottoinsieme di controlli WPF che supportano l'input da telecomando (tramite gli stili di WMC):

Schermata di Windows Media Center

Queste limitazioni non precludono l'utilizzo di altri controlli WPF, benché sia necessario eseguire ulteriori operazioni per poterli utilizzare in WMC. Ad esempio, si consideri il controllo Slider, ospitato in WMC come illustrato nella figura seguente:

Schermata di Slider

Per impostazione predefinita, è possibile visualizzare e spostarsi su un oggetto Slider utilizzando il mouse, la tastiera o il telecomando. Tuttavia, non è possibile spostarsi da un oggetto Slider utilizzando il telecomando, in quanto la selezione dei pulsanti su, giù, sinistra e destra del telecomando viene interpretata da Slider come il tentativo di aumentare o ridurre il proprio valore.

In queste situazioni, una soluzione consiste nella creazione di un controllo composito che contiene il controllo desiderato oltre a controlli aggiuntivi compatibili con il telecomando per modificarlo. Ad esempio, è possibile utilizzare Slider con due pulsanti, uno per diminuire e l'altro per aumentare il valore di Slider, utilizzando il codice seguente:

<Page x:Class="SliderPage"
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">

  <!-- Custom Slider -->
  <StackPanel Margin="50" Orientation="Horizontal" VerticalAlignment="Top">
    <Button 
      Name="decrementButton" 
      Click="decrementButton_Click"
      Margin="10" 
      FontSize="10" 
      HorizontalContentAlignment="Center" 
      VerticalContentAlignment="Center" 
      Width="40" Height="40">
      -
    </Button>
    <Slider 
      Name="slider" 
      Focusable="False" 
      Width="100" Margin="0,15,0,0" 
      Minimum="0" Maximum="10" Value="50" 
      Interval="1" TickFrequency="1" TickPlacement="BottomRight" />
    <Button 
      Name="incrementButton" 
      Click="incrementButton_Click"
      Margin="10" 
      FontSize="10" 
      HorizontalContentAlignment="Center" 
      VerticalContentAlignment="Center" 
      Width="40" Height="40">
      +
    </Button>
  </StackPanel>
  
</Page>
using System.Windows;
using System.Windows.Controls;
public partial class SliderPage : System.Windows.Controls.Page
{
    //</SnippetSliderPageCodeBehind1>
    public SliderPage()
    {
        InitializeComponent();
    }

    void decrementButton_Click(object sender, RoutedEventArgs e)
    {
        this.slider.Value--;
    }
    void incrementButton_Click(object sender, RoutedEventArgs e)
    {
        this.slider.Value++;
    }
}

Nella figura riportata di seguito viene illustrato il risultato.

Schermata di Slider

Controlli WPF aggiuntivi per WMC

Un altro controllo problematico è TextBox, illustrato nella figura riportata di seguito. Tramite un telecomando, non è possibile immettere caratteri in TextBox. È necessario un controllo che consenta la selezione di uno o più caratteri all'utente che utilizza il telecomando. Una tecnica comune già utilizzata in dispositivi mobili privi di una tastiera completa consiste nel visualizzare una tastiera nell'interfaccia utente e consentire agli utenti di selezionare i caratteri necessari.

Nell'esempio viene presentato un controllo tastiera software per applicazioni WPF destinate a WMC, come illustrato nella figura riportata di seguito:

Controllo tastiera software

Questo controllo viene implementato come classe SoftKeyboardTextBox nell'assembly Keyboard.dll fornito nell'esempio e risiede nello spazio dei nomi MCEControls. Per utilizzarlo:

  1. Aggiungere un riferimento all'assembly Keyboard fornito con MCEControls.

  2. Aggiungere una dichiarazione dello spazio dei nomi XML all'assembly nel contenuto.

  3. Aggiungere XAML per dichiarare e configurare SoftKeyboardTextBox.

Nel codice riportato di seguito viene illustrato il risultato:

<Page 
  ... 
  xmlns:MCEControls="clr-namespace:MCEControls;assembly=Keyboard" >
  ...
  <MCEControls:SoftKeyboardTextBox 
    Name="guessedChar" 
    Grid.Column="0" 
    Margin="0,0,5,0" 
    Width="80" 
    MaxLength="1" />
  ...
</Page>

Utilizzo delle librerie di classi di .NET Framework 3.0

Un'applicazione WPF per WMC non è limitata ai controlli. Un'applicazione WPF può anche utilizzare l'ampiezza di .NET Framework per funzionalità aggiuntive, consentendo l'utilizzo dello stesso codice utilizzato per applicazioni WPF autonome o ospitate da browser.

Ad esempio, il codice per salvare e caricare dati da un'applicazione ospitata da WMC è uguale a quello per le applicazioni non WMC e lo stesso vale per i vincoli di sicurezza (vedere Sicurezza di Windows Presentation Foundation). La posizione da cui viene avviata l'applicazione determina se un'applicazione ospitata da WMC può essere scritta o meno sul disco locale.

Per essere sicura, un'applicazione può utilizzare spazio di memorizzazione isolato per salvare i file in modo permanente:

using System;
using System.ComponentModel;
using System.IO;
using System.IO.IsolatedStorage;
using System.Xml;
using System.Xml.Serialization;
...
public static PlayerScore Load()
{
    try
    {
        // Load the playerscore.xml file from isolated storage
        using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
        using (Stream stream = new IsolatedStorageFileStream("playerscore.xml", FileMode.Open, isf))
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(PlayerScore));
            return (PlayerScore)xmlSerializer.Deserialize(stream);
        }
    }
    catch (FileNotFoundException ex)
    {
        return new PlayerScore();
    }
}

public static void Save(PlayerScore playerScore)
{
    // Save the playerscore.xml file to isolated storage
    using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
    using (Stream stream = new IsolatedStorageFileStream("playerscore.xml", FileMode.Create, isf))
    {
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(PlayerScore));
        xmlSerializer.Serialize(stream, playerScore);
    }
}

Integrazione con API gestite WMC

È anche possibile integrare le applicazioni WPF per WMC con le funzionalità di WMC tramite un insieme di API gestite installate con il sistema operativo e situate in due assembly: Microsoft.MediaCenter.dll e Microsoft.MediaCenter.UI.dll.

Utilizzando queste API, è possibile integrare un'ampia gamma di servizi WMC, inclusi il controllo, la configurazione e la riproduzione del contenuto multimediale. Per ulteriori informazioni su questi servizi, vedere WMC SDK.

Un aspetto di queste funzionalità consiste in un'ulteriore integrazione dell'esperienza utente dell'applicazione con WMC. Ad esempio, se in un'applicazione WPF è necessario inviare una notifica all'utente, è possibile che venga visualizzata una finestra di messaggio simile alla seguente:

Schermata dell'esempio WordGame

Tuttavia, l'aspetto di una finestra di messaggio WPF standard non è coerente con l'esperienza di WMC. Fortunatamente, però, le API gestite WMC forniscono una finestra di messaggio in stile WMC che può essere utilizzata con codice analogo al seguente:

using Microsoft.MediaCenter;
...
// Get media center host and show dialog box
MediaCenterEnvironment mce = Microsoft.MediaCenter.Hosting.AddInHost.Current.MediaCenterEnvironment;
mce.Dialog(msg, "WordGame!", DialogButtons.Ok, 1000, true);

Tale codice determina la visualizzazione di una finestra di dialogo WMC come la seguente:

Schermata dell'esempio WordGame

Per una comprensione approfondita delle API gestite WMC, vedere WMC SDK.

Nota

Non è possibile eseguire un'applicazione XBAP che fa riferimento alle API gestite WMC a meno che tale XBAP non sia ospitata da WMC.

Sviluppo con Visual Studio

Finora, in questo argomento sono stati analizzati i principali problemi di programmazione da affrontare per la compilazione di XBAP per WMC, tra cui:

  • Creazione di un'applicazione XBAP tipica.

  • Utilizzo di un file mcl per avviare un'applicazione XBAP in WMC.

  • Creazione di un tema WMC per un'applicazione XBAP.

  • Riferimento alle API gestite WMC.

Vi sono problemi che sarà necessario affrontare per ogni applicazione XBAP compilata per WMC. Anziché ricreare questi elementi ogni volta che si compila un'applicazione XBAP per WMC, è possibile utilizzare il modello di progetto di applicazione Media Center (WPF) per Microsoft Visual Studio 2005 installato con WMC SDK.

Nota

I modelli di progetto WMC vengono installati solo se si installa sia Visual Studio 2005, sia "Fidalgo".

Tramite il modello di progetto di applicazione Media Center (WPF) viene creato un progetto Visual Studio 2005 in cui sono inclusi questi elementi, per impostazione predefinita.

Per creare una nuova applicazione Media Center (WPF):

  1. Aprire Visual Studio 2005.

  2. Scegliere Microsoft Visual Studio | File | Nuovo | Progetto | Visual C# | .NET Framework 3.0 | Applicazione Media Center (WPF).

Nell'elenco riportato di seguito vengono illustrati gli elementi principali generati dal modello di progetto per impostazione predefinita:

  • Un file readme.txt include testo utile relativo alla compilazione e al debug delle applicazioni XBAP per WPF.

  • Riferimenti agli assembly gestiti WMC.

  • Un file MediaCenterTheme.xaml è un dizionario risorse che contiene un insieme completo di stili WMC che vengono applicati, per impostazione predefinita, alla pagina predefinita, Page1.xaml.

  • Un file mcl generato insieme all'output XBAP standard.

Si noti che esiste un modello di progetto equivalente per Microsoft Visual Basic.

Debug di un progetto

Per eseguire il debug di un'applicazione XBAP all'interno dell'host WMC da Visual Studio 2005, è necessario eseguire le operazioni seguenti:

  1. Fare clic con il pulsante destro del mouse in Esplora soluzioni, quindi scegliere Proprietà | Debug.

  2. Impostare Programma di avvio su c:\windows\system32\presentationhost.exe.

  3. Impostare Argomenti della riga di comando su - debug.

  4. Eseguire l'applicazione scegliendo Microsoft Visual Studio | Debug | Avvia debug (o premendo F5).

  5. Fare doppio clic sul file mcl generato durante il processo di compilazione (\bin\debug\assemblyname.mcl).

L'applicazione specificata nel file mcl verrà avviata e ospitata in WMC.

Installazione di un'applicazione WPF per WMC

Uno dei vantaggi dell'utilizzo di WMC è la capacità di agevolare la creazione di applicazioni Microsoft Windows Installer (file msi). .I file msi sono utili per distribuire l'applicazione WPF ai computer client WMC.

Nella procedura riportata di seguito viene creata una semplice applicazione Windows Installer per WordGame!:

  1. In Visual Studio 2005, fare clic con il pulsante destro del mouse sulla soluzione XBAP in Esplora risorse, quindi scegliere Aggiungi | Nuovo progetto.

  2. Nell'elenco Tipi progetto, selezionare Altri tipi di progetto | Installazione e distribuzione.

  3. Nell'elenco Modelli, selezionare Progetto di installazione o Installazione guidata. La seconda opzione guida l'utente nella configurazione iniziale del progetto di installazione Windows Installer creato.

  4. Fare clic con il pulsante destro del mouse sul nuovo progetto Windows Installer, scegliere Aggiungi | File e selezionare i file seguenti:

    1. WordGameWMC.mcl

    2. WordGameWMC.exe

    3. WordGameWMC.exe.manifest

    4. WordGameWMC.xbap

    5. WordList.txt

    6. Keyboard.dll

  5. Nella scheda File system, scegliere Desktop utente.

  6. Nell'elenco di file, fare clic con il pulsante destro del mouse e selezionare Crea collegamento a desktop utente.

  7. Selezionare Cartella applicazione | WordGameWMC.mcl.

  8. Compilare nuovamente il progetto Windows Installer.

Quando il progetto Windows Installer viene compilato, viene generato un file msi nella cartella dell'output di compilazione. Tale file viene quindi copiato nel computer client ed eseguito per installare l'applicazione. L'installazione predefinita prevede la creazione di una cartella con il formato seguente:

c:\program files\CompanyName\ApplicationName\Application Files

Tutti i file selezionati durante la configurazione del progetto Windows Installer vengono copiati in questa cartella, insieme a tutti gli assembly dipendenti selezionati dal progetto Windows Installer.

Inoltre, sul desktop viene posizionata un'icona di collegamento a WordGameWMC.mcl su cui è possibile fare doppio clic per avviare l'applicazione in WMC.

Nota

È necessario aggiornare manualmente il file di progetto per l'applicazione per garantire che il percorso del file xbap aggiunto al file mcl generato sia corretto per l'installazione.

Questa installazione è una dimostrazione che può essere utilizzata per analizzare i concetti di base della creazione di Windows Installer per un'applicazione WPF per WMC.

Per applicazioni WPF realistiche per WMC, è necessario adottare tecniche di installazione diverse.

Innanzitutto, nell'applicazione è necessario installare un file HTML che fornisce un collegamento all'applicazione WPF ospitata da server Web. L'hosting su server Web consente la creazione, la pubblicazione e la scelta di nuove versioni dell'applicazione da parte del computer client senza che occorra reinstallare l'applicazione.

In secondo luogo, è opportuno non utilizzare file mcl. In alternativa, creare un programma Windows Installer che chiami l'API MediaCenter.RegisterApplicationWMC oppure eseguire l'utilità della riga di comando RegisterMceApp.exe. Per ulteriori informazioni, vedere WMC SDK.

Vedere anche

Concetti

Cenni preliminari sulle applicazioni browser XAML di Windows Presentation Foundation

Altre risorse

Windows Media Center Software Development Kit