Freigeben über


Übersicht über Windows Media Center-gehostete Anwendungen in Windows Presentation Foundation

Aktualisiert: November 2007

Microsoft Windows Media Center (WMC) ist eine Anwendung für digitale Unterhaltungsmedien, die zusammen mit Windows Vista Home Premium Edition, Windows Vista Ultimate und Microsoft Windows XP Media Center Edition 2005 installiert wird. WMC ermöglicht Benutzern die Verwaltung und Verwendung einer Vielzahl unterschiedlicher Medien wie Fernsehen (digital und hochauflösend), DVDs, Musik, Video, Radio und Fotos.

Bildschirmabbildung des Windows Media Center

Ein WMC-Personalcomputer (PC) kann unmittelbar zur Anzeige und Wiedergabe digitaler Medien verwendet werden. Dies bezeichnet man auch als 2'-Benutzererfahrung, weil die Benutzer WMC am PC über eine Maus, eine Tastatur und einen Monitor bedienen.

Ein WMC-PC kann jedoch auch so konfiguriert werden, dass er über eine Fernbedienung oder eine Funktastatur bedient werden kann. In dieser Anordnung müssen Benutzer nicht direkt vor dem WMC-PC sitzen, um ihn zu bedienen. Sie wird auch als 10'-Benutzererfahrung bezeichnet und bezieht sich auf WMC-Konfigurationen, die aus großen Bildschirmen sowie herkömmlichen Geräten der Unterhaltungselektronik wie Fernsehern und Stereoanlagen bestehen.

Die Basisfunktionalität, die WMC bietet, besteht aus einer Reihe von Anwendungen zur Verwaltung und Wiedergabe digitaler Medien. Sie können WPF jedoch auch dazu verwenden, Ihre eigenen benutzerdefinierten Anwendungen für die Windows Vista-Versionen von WMC zu erstellen.

Dieses Thema enthält eine Einführung in die Entwicklung von WPF-Anwendungen für WMC und deckt folgende Bereiche ab:

  • Erstellen und Bereitstellen einer einfachen WPF-Spielanwendung

  • Ausrichten auf die 2'- und auf die 10'-WMC-Benutzererfahrung

  • Anpassen von WPF-Steuerelementen zur Unterstützung von WMC

  • Verwenden neuer WMC-spezifischer Steuerelemente für WPF

  • Optimale Nutzung der Unterstützung in .NET Framework

  • Integrieren in WMC über verwaltete APIs

  • Verwenden von Visual Studio 2005, um den Entwicklungsprozess zu verbessern

Umfassende Informationen über die Entwicklung von Anwendungen für WMC finden Sie im Windows Media Center Software Development Kit (WMC SDK).

Dieses Thema enthält folgende Abschnitte.

  • Hosten von WPF-Anwendungen in WMC
  • Starten einer WPF-Anwendung für WMC
  • WMC-Benutzererfahrung
  • Aktualisieren von WPF-Steuerelementen für WMC
  • Zusätzliche WPF-Steuerelemente für WMC
  • Verwenden der .NET Framework 3.0-Klassenbibliotheken
  • Integrieren in von WMC verwaltete APIs
  • Entwickeln mit Visual Studio
  • Installieren einer WPF-Anwendung für WMC
  • Verwandte Abschnitte

Hosten von WPF-Anwendungen in WMC

WPF ermöglicht die Entwicklung von zwei Anwendungsarten: eigenständige und im Browser gehostete Anwendungen. Eigenständige Anwendungen verfügen über eigene Fenster und Dialogfelder, in denen sie Anwendungsinhalte hosten. Es gibt zwei Typen von im Browser gehosteten Anwendungen, Loose XAML-Anwendungen und XBAPs. Beide werden von Internet Explorer 7 gehostet. Internet Explorer 7 verfügt jedoch über keinerlei Informationen zu WPF. Um das Hosten von WPF-Inhalten in Internet Explorer 7 zu ermöglichen, stellt WPF Anwendungen wie Internet Explorer, einen Hostingproxy, bereit. Dieser Proxy kann WPF-Inhalte stellvertretend für andere Anwendungen hosten. Er ist auf derselben Windows-Infrastruktur aufgebaut, die Internet Explorer selbst zu hosten im Stande ist.

WMC kann diesen Proxy ebenfalls hosten und ist daher in der Lage, im Browser gehostete WPF-Anwendungen zu hosten. Das bedeutet, dass Sie die Vorteile einer Entwicklungsplattform für WPF-Anwendungen im Allgemeinen und die Navigations- und Sicherheitsfeatures von im Browser gehosteten Anwendungen im Speziellen nutzen können.

Im verbleibenden Teil dieses Themas wird die WordGame!-Anwendung für WMC verwendet (siehe Demo zu WordGame! für Windows Media Center).

Starten einer WPF-Anwendung für WMC

Die WordGame!-Anwendung besteht aus den folgenden drei Dateien (die Mindestanforderung für alle XBAPs):

  • wordgamewmc.exe. Der XBAP.

  • wordgamewmc.exe.manifest. Das ClickOnce-Anwendungsmanifest.

  • wordgamewmc.xbap. Das ClickOnce-Bereitstellungsmanifest.

XBAPs werden mithilfe von ClickOnce gestartet, wobei eine Konfiguration der Anwendung mit den Anwendungs- und Bereitstellungsmanifestdateien erforderlich ist (siehe Erstellen einer WPF-Anwendung (WPF)). Genauer gesagt wird eine XBAP gestartet, wenn zur zugehörigen XBAP-Datei navigiert oder auf diese Datei doppelgeklickt wird. Beim Start lädt ClickOnce standardmäßig die Anwendung stellvertretend für WPF herunter. Anschließend wird Internet Explorer von WPF gestartet und wechselt zur Anwendung, wie in der folgenden Abbildung veranschaulicht wird:

Word Game-Bildschirmabbildung

Um jedoch eine WMC-Anwendung zu starten, navigieren Benutzer zu einer WMC-Verknüpfungsdatei (.mcl) oder doppelklicken auf die Datei aus. Eine MCL-Datei ist eine XML-Konfigurationsdatei, die in Windows so konfiguriert wird, dass sie vom WMC-Host (ehshell.exe) geöffnet wird, wenn man zu ihr navigiert oder auf sie doppelklickt (siehe WMC SDK).

Tipp

.MCL-Dateien sind für den Entwicklungsprozess hilfreich. Es ist jedoch nicht empfehlenswert, sie als Mechanismus zum Installieren und Starten von WMC einzusetzen. Siehe Installieren einer WPF-Anwendung für WMC.

Wenn eine MCL-Datei geöffnet wird, analysiert und verarbeitet der WMC-Host die Konfigurationsanweisungen, die in der MCL-Datei enthalten sind. Die wichtigste in diesen Anweisungen enthaltene Information ist der Name der Anwendung, die geöffnet werden soll. Sie verwenden diesen Mechanismus, um eine MCL-Datei zu erstellen, die dazu konfiguriert wird, eine XBAP zu starten:

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

Wenn der WMC-Host diese MCL-Datei verarbeitet, navigiert der WMC-Host zur XBAP-Datei. Dadurch wird ClickOnce dazu veranlasst, die Anwendung im WMC-Host selbst zu starten, wie in der folgenden Abbildung veranschaulicht wird:

Word Game-Bildschirmabbildung

Tipp

Wenn WMC eine Loose XAML-Anwendung hosten soll, muss die MCL-Datei wie folgt mit einer XAML-Datei konfiguriert werden:

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

Ohne Änderungen an der XBAP selbst und durch das Hinzufügen einer einzelnen Konfigurationsdatei kann eine im Browser gehostete WPF-Anwendung unverändert von WMC gehostet werden.

Die Benutzererfahrung in WMC ist jedoch ziemlich charakteristisch. Aus Stil- und Konsistenzgründen sollten XBAPWMC-Anwendungen deshalb so entwickelt werden, dass sie sich nahtlos in die Benutzererfahrung von WMC einfügen. Im weiteren Verlauf dieses Themas werden die wichtigsten Aspekte der WMC-Benutzererfahrung erläutert, und es wird veranschaulicht, wie XBAPs so erstellt werden können, dass sie sich in diese Benutzererfahrung einfügen.

WMC-Benutzererfahrung

Eine konsistente Benutzererfahrung bereitzustellen, ist eine der wichtigsten Aufgaben jeder Anwendungsentwicklung. Im Hinblick auf WMC-Benutzer sollte eine Anwendung in folgenden Bereichen Konsistenz wahren:

  • Design. Der allgemeine Stil der Benutzeroberfläche einer Anwendung.

  • Layout. Position und Größe von Steuerelementen.

  • Navigation. Das Verwenden von Tastatur, Maus und Fernbedienung, um durch die Benutzeroberfläche einer Anwendung zu navigieren.

Eine detaillierte Erläuterung der WMC-Benutzererfahrung finden Sie im WMC SDK. Die folgenden Themen bieten lediglich einen grundlegenden Überblick.

Design

Wie Sie in der folgenden Abbildung sehen können, verfügt das WMC-Design über mehrere charakteristische Elemente:

Bildschirmabbildungen des Windows Media Center

Zu den ausgeprägtesten Elementen zählen der blaue, glasartige Hintergrund sowie große, abgerundete Schriftzeichen in hellen Farben. Damit soll eine Darstellung erzielt werden, die von 10'-Benutzern, die in größerer Entfernung von ihrem Fernsehgerät sitzen, ebenso leicht erkannt werden kann, wie von 2'-Benutzern, die direkt vor ihrem Monitor sitzen. Obwohl diese grundlegende Darstellung bei WPF-Anwendungen beibehalten werden sollte, stellt WMC die entsprechenden Informationen nicht standardmäßig zur Verwendung für WPF-Anwendungen zur Verfügung. WPF bietet jedoch eine umfangreiche Formatierungs- und Designinfrastruktur, mit deren Hilfe die WMC-Darstellung leicht nachgebildet werden kann, falls erforderlich. Wahlweise können Sie mit WPF auch eine völlig neue und optisch vielfältigere Benutzererfahrung entwickeln. Dabei sollten Sie jedoch bestimmte Aspekte des Layouts und der Navigation nicht außer Acht lassen.

Um beispielsweise einen Seitenhintergrund im WMC-Stil zu erstellen, können Sie wie folgt vorgehen:

<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>

Da ein Design in der Regel aus mehr als einem Element besteht, sollten Sie die Verwendung eines benutzerdefinierten Ressourcenwörterbuchs in Erwägung ziehen, in dem alle wesentlichen Stile des WMC-Designs gekapselt sind:

<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>

Um ein Ressourcenwörterbuch in eine Anwendung zu integrieren, konfigurieren Sie das Application.Resources-Element Ihrer Anwendungsdefinition so, dass es auf die XAML-Datei des Ressourcenwörterbuchs verweist:

<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>

Die folgende Abbildung zeigt WordGame!, nachdem es mit einem vollständigen Satz an Stilen und Ressourcen für das WMC-Design aktualisiert wurde.

Word Game-Bildschirmabbildung

WMC hindert Sie nicht daran, Anwendungsdesigns zu erstellen, die anwendungsspezifische und markenspezifische Elemente enthalten. Bei der Entwicklung einer Anwendung für die WMC-Benutzererfahrung sollten für das Design der Anwendung jedoch unter anderem folgende Aspekte berücksichtigt werden:

  • TV-gerechte Farben: Verwenden Sie keine hellen Farben, die möglicherweise anfällig für Farbausblutungen sind (z. B. Grün, Rot).

  • Kontrast: Damit sich Text deutlich vom Hintergrund abhebt, sollten die für die visuellen Elemente verwendeten Vordergrund- und Hintergrundfarben geeignete Kontrastwerte haben.

  • Schriftarten: Sie können die Lesbarkeit verbessern, indem Sie größere Schriftarten ohne Serifen verwenden. Außerdem können Sie durch das Entfernen überflüssiger Textpassagen die Lesbarkeit der verwendeten Texte erhöhen.

  • Schaltflächen: Verwenden Sie für Schaltflächen eine möglichst einfache Darstellung.

  • Bilder: Beim Erstellen von Bildern sollten Sie Qualität und Größe des angezeigten Bilds sowie die Downloadgröße beachten.

  • Animation: Verwenden Sie Animation nur, wenn dies zweckmäßig ist.

Ausführliche Informationen zu WMC-Anwendungsdesigns finden Sie im WMC SDK.

Layout

Ein Problem, das möglicherweise nicht gleich erkennbar ist, kann auftreten, wenn ein Benutzer den Mauszeiger über den WMC-Host bewegt, wodurch der WMC-Host zusätzliche Benutzeroberflächenelemente für die mausgesteuerte Navigation anzeigt, wie in der folgenden Abbildung veranschaulicht wird:

Bildschirmabbildung für WordGame-Beispiel

In der Abbildung können Sie sehen, dass der linke obere und der rechte untere Bereich der Benutzeroberfläche vom Navigationschrom verdeckt werden. In einem solchen Fall können Sie das Layout der Benutzeroberfläche so aktualisieren, dass die Navigationsbenutzeroberfläche berücksichtigt wird. Bei WordGame! beinhaltete diese Aktualisierung das Verschieben des Anwendungstitels auf die rechte Seite der Benutzeroberfläche sowie das Hinzufügen einer 50 Pixel hohen Zeile am unteren Rand des Grid-Elements, das den Inhalt auf der Startseite hostet:

<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>

Was das Hinzufügen dieser Zeilen bewirkt, wird in der folgenden Abbildung veranschaulicht:

Bildschirmabbildung für WordGame-Beispiel

Aus diesem Grund müssen XBAPs für WMC die unterschiedlichen Layoutverhalten von WMC berücksichtigen.

Berücksichtigen Sie unter anderen folgende wichtige Aspekte des Layouts:

  • Anwendungslayout: Das Layout der Anwendungen sollte einfach und konsistent sein, damit sich die Benutzer einfacher und schneller in der Benutzeroberfläche zurechtfinden.

  • WMC-Layout: Das Layout der Anwendungen sollte, sofern dies zweckmäßig ist, konsistent mit der allgemeinen WMC-Benutzererfahrung sein. So finden sich Benutzer, die bereits mit WMC vertraut sind, schneller in der Anwendung zurecht.

  • Video: Wenn die Anwendung Videos mithilfe der von WMC verwalteten APIs abspielt, erfolgt die Videowiedergabe durch WMC unten links auf dem Bildschirm. Dies sollte beim Layout der Benutzeroberfläche beachtet werden.

  • Auflösung: Sie sollten für die Benutzeroberfläche und das Layout der Anwendung eine Auflösung von 1024 x 768 verwenden. WPF bietet Layoutunterstützung, die Sie beim Layout der Benutzeroberfläche für eine Auflösung von 1024 x 768 unterstützt und sicherstellt, dass das Layout auch bei Änderungen der Größe der Benutzeroberfläche beibehalten wird. (Weitere Informationen finden Sie unter Das Layoutsystem.)

Ausführliche Informationen zu WMC-Layouts finden Sie im WMC SDK.

Prinzipiell bestimmen Layout und Design, wie die Steuerelemente, aus der die Benutzeroberfläche einer Anwendung besteht, angeordnet sind. Die Navigation dagegen bestimmt, wie die Benutzer zu den einzelnen Steuerelementen gelangen und zwischen diesen wechseln.

Das Steuerelement, für das gerade eine Benutzereingabe erfolgt, besitzt zu diesem Zeitpunkt den Fokus. Um den Fokus auf ein bestimmtes Steuerelement zu legen, wenn eine Seite der XBAP-Anwendung angezeigt wird, können Sie Markup verwenden:

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

Sie sollten diese Vorgehensweise wählen, um sowohl den 2'- als auch den 10'-Betriebsmodus zu unterstützen.

Damit Benutzer sowohl im 2'- als auch im 10'-Modus durch die Steuerelemente einer WMC-Anwendung navigieren können, muss die Navigation in der Anwendung über eine Maus, eine Tastatur (verkabelt oder kabellos) und eine Fernbedienung erfolgen. Standardmäßig erfolgt die Navigation über Maus und Keyboard genauso wie bei jeder anderen WPF-Anwendung:

  • Steuerelemente erhalten den Fokus, wenn auf sie geklickt wird.

  • Mit der TAB-TASTE kann der Fokus von einem Steuerelement zum nächsten verschoben werden.

  • Mithilfe der IsDefault-Eigenschaft einer Schaltfläche kann festgelegt werden, dass sie durch Drücken der EINGABETASTE aktiviert wird.

  • Mithilfe der IsCancel-Eigenschaft einer Schaltfläche kann festgelegt werden, dass sie durch Drücken der ESC-TASTE aktiviert wird.

Für die Unterstützung von Fernbedienungen muss die Anwendung Richtungsnavigation unterstützen. Das bedeutet, dass Benutzern die Möglichkeit haben, den Fokus auf den Steuerelementen zu verschieben, indem sie die Oben-, Unten-, Links- und Rechts-Tasten auf der Fernbedienung drücken. Sie müssen zur Unterstützung von Richtungsnavigation keinen bestimmten Code schreiben, wenn Sie eine bestimmte Teilmenge von WPF-Steuerelementen verwenden.

Aktualisieren von WPF-Steuerelementen für WMC

WPF stellt zwar zahlreiche Steuerelemente zur Verfügung, jedoch ist nur eine bestimmte Teilmenge dieser Steuerelemente standardmäßig für die Verwendung in WMC-Anwendungen geeignet. Entscheidend ist, ob die Steuerelemente über eine Fernbedienung angewählt und betätigt werden können. In der folgenden Abbildung wird eine Teilmenge von WPF-Steuerelementen angezeigt, die die Eingabe über eine Fernbedienung unterstützen (mithilfe von WMC-Stilen):

Bildschirmabbildung des Windows Media Center

Dies schließt die Verwendung anderer WPF-Steuerelemente nicht aus. Damit diese jedoch in WMC funktionieren, sind einige zusätzliche Arbeitsschritte erforderlich. Betrachten Sie beispielsweise das Slider-Steuerelement, das in der folgenden Abbildung in WMC gehostet angezeigt wird:

Bildschirmabbildung von Schieberegler

Standardmäßig kann ein Slider angezeigt werden, und es kann mit der Maus, der Tastatur oder einer Fernbedienung zu diesem Steuerelement navigiert werden. Es kann jedoch nicht mit der Fernbedienung von einem Slider navigiert werden. Das Slider-Steuerelement interpretiert das Betätigen der Oben-, Unten-, Links- und Rechts-Tasten der Fernbedienung als Versuch, den Wert des Slider zu verringern oder zu erhöhen.

Eine mögliche Lösung hierfür ist die Erstellung eines zusammengesetzten Steuerelements, das zusätzlich zum gewünschten Steuerelement weitere mit Fernbedienungen kompatible Steuerelemente enthält. Beispielsweise kann das Slider-Steuerelement mithilfe des folgenden Codes über zwei Tasten bedient werden, eine zum Verringern des Slider-Werts und eine zum Erhöhen des Slider-Werts:

<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++;
    }
}

Das Ergebnis wird in der folgenden Abbildung dargestellt.

Bildschirmabbildung von Schieberegler

Zusätzliche WPF-Steuerelemente für WMC

Ein weiteres problematisches Steuerelement ist TextBox, das in der folgenden Abbildung dargestellt wird. Über eine Fernbedienung können keine Zeichen in das TextBox eingegeben werden. Hierzu wird ein Steuerelement benötigt, mit dem der Benutzer über die Fernbedienung ein oder mehrere Zeichen auswählen kann. Eine gängige Technik, die bereits bei Mobiltelefonen verwendet wird, die aufgrund ihrer Größe nicht über eine vollständige Tastatur verfügen, ist die Anzeige einer Tastatur auf der Benutzeroberfläche. Über diese Tastatur können die gewünschten Zeichen ausgewählt werden.

Das in der folgenden Abbildung dargestellte Beispiel beinhaltet ein Bildschirmtastatur-Steuerelement für WPF-Anwendungen, die für WMC vorgesehen sind:

Das Bildschirmtastatur-Steuerelement

Dieses wird als SoftKeyboardTextBox-Klasse in der Keyboard.dll-Assembly implementiert, die im Beispiel enthalten und im MCEControls-Namespace abgelegt ist. Um es zu verwenden, müssen Sie folgende Schritte ausführen:

  1. Fügen Sie einen Verweis auf die Keyboard-Assembly hinzu, die in den MCEControls enthalten ist.

  2. Fügen Sie der Assembly im Inhalt eine XML-Namespacedeklaration hinzu.

  3. Fügen Sie die XAML hinzu, um ein SoftKeyboardTextBox zu deklarieren und zu konfigurieren.

Das Ergebnis wird im folgenden Code dargestellt:

<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>

Verwenden der .NET Framework 3.0-Klassenbibliotheken

Eine WPF-Anwendung für WMC ist nicht auf Steuerelemente beschränkt. Eine WPF-Anwendung kann die gesamte Bandbreite an Funktionen nutzen, die in .NET Framework zur Verfügung stehen. Dadurch können Sie denselben Code verwenden, den Sie für eigenständige oder in einem Browser gehostete WPF-Anwendungen verwenden würden.

Beispielsweise ist der Code zum Speichern und Laden von Daten aus einer Anwendung, die von WMC gehostet wird, derselbe wie für Nicht-WMC-Anwendungen. Dasselbe gilt auch für die Sicherheitseinschränkungen (siehe Windows Presentation Foundation-Sicherheit). Je nachdem, von wo aus die Anwendung gestartet wird, hat eine in WMC gehostete Anwendung Schreibzugriff auf den lokalen Datenträger oder nicht.

Aus Sicherheitsgründen kann eine Anwendung isolierten Speicher verwenden, um Dateien beizubehalten:

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);
    }
}

Integrieren in von WMC verwaltete APIs

WPF-Anwendungen für WMC können mithilfe einer Reihe verwalteter APIs in die Funktionen von WMC selbst integriert werden. Diese werden mit dem Betriebssystem installiert und befinden sich in zwei Assemblys: Microsoft.MediaCenter.dll und Microsoft.MediaCenter.UI.dll.

Mithilfe dieser APIs können Sie eine Vielzahl von WMC-Diensten integrieren, unter anderem das Überprüfen, Konfigurieren und Wiedergeben von Medieninhalt. Weitere Informationen hierzu finden Sie im WMC SDK.

Diese Funktionen ermöglichen es Ihnen unter anderem, die Benutzererfahrung der Anwendung noch besser in WMC zu integrieren. Wenn eine WPF-Anwendung den Benutzer beispielsweise über ein Meldungsfeld benachrichtigen muss, könnte dieses wie folgt angezeigt werden:

Bildschirmabbildung für WordGame-Beispiel

Die Darstellung eines standardmäßigen WPF-Meldungsfelds ist jedoch nicht mit der Benutzererfahrung von WMC konsistent. Glücklicherweise verfügen die von WMC verwalteten APIs über ihre eigenen Meldungsfelder im WMC-Stil, die Sie mit Code wie dem folgenden verwenden können:

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);

Durch diesen Code wird ein WMC-Dialogfeld wie das folgende angezeigt:

Bildschirmabbildung für WordGame-Beispiel

Ausführliche Informationen zu den von WMC verwalteten APIs finden Sie im WMC SDK.

Tipp

Sie können eine XBAP, die auf die von WMC verwalteten APIs verweist, nur dann ausführen, wenn die XBAP von WMC gehostet wird.

Entwickeln mit Visual Studio

Bisher wurden in diesem Thema unter anderem folgende wichtigen Programmierungsaspekte behandelt, die Sie beim Entwickeln einer XBAPs für WMC beachten müssen:

  • Erstellen einer typischen XBAP-Anwendung

  • Verwenden einer MCL-Datei, um eine XBAP in WMC zu starten

  • Erstellen eines WMC-Designs für eine XBAP

  • Verweisen auf von WMC verwaltete APIs

Diese Aspekte müssen bei der Entwicklung einer XBAP für WMC nahezu immer berücksichtigt werden. Anstatt diese Elemente bei der Entwicklung einer XBAP für WMC jedes Mal selbst erneut zu erstellen, können Sie die Projektvorlage der Media Center-Anwendung (WPF) für Microsoft Visual Studio 2005 verwenden, die mit dem WMC SDK installiert wird.

Tipp

Die WMC-Projektvorlagen sind nur dann installiert, wenn sowohl Visual Studio 2005 als auch "Fidalgo" installiert sind.

Die Projektvorlage der Media Center-Anwendung (WPF) erstellt ein Visual Studio 2005-Projekt, das diese Elemente standardmäßig beinhaltet.

So erstellen Sie eine neue Media Center-Anwendung (WPF)

  1. Öffnen Sie Visual Studio 2005.

  2. Wählen Sie Microsoft Visual Studio | Datei | Neu | Projekt | Visual C# | .NET Framework 3.0 | Media Center-Anwendung (WPF) aus.

Die folgende Liste enthält die Hauptelemente, die standardmäßig von der Projektvorlage generiert werden:

  • Die Infodateidatei readme.txt. Diese Datei enthält nützliche Informationen zur Entwicklung und zum Debuggen von XBAPs für WPF.

  • Verweise auf die von WMC-verwalteten Assemblys.

  • Die Datei MediaCenterTheme.xaml. Bei dieser Datei handelt es sich um ein Ressourcenwörterbuch, das einen vollständigen Satz von WMC-Stilen enthält, die standardmäßig auf die Standardseite Page1.xaml angewendet werden.

  • Eine MCL-Datei, die zusammen mit der Standard-XBAP-Ausgabe generiert wird.

Beachten Sie, dass es eine entsprechende Projektvorlage für Microsoft Visual Basic gibt.

Debuggen eines Projekts

Um eine XBAP innerhalb des WMC-Hosts von Visual Studio 2005 zu debuggen, müssen Sie wie folgt vorgehen:

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Eigenschaften | Debuggen aus.

  2. Legen Sie Startprogramm auf c:\windows\system32\presentationhost.exe fest.

  3. Legen Sie Befehlszeilenargumente auf -debug fest.

  4. Führen Sie die Anwendung aus, indem Sie Microsoft Visual Studio | Debuggen | Debuggen starten auswählen (oder indem Sie F5 drücken).

  5. Doppelklicken Sie auf die MCL-Datei, die während des Buildprozesses (\bin\debug\assemblyname.mcl) generiert wird.

Die in der MCL-Datei angegebene Anwendung wird gestartet und in WMC gehostet.

Installieren einer WPF-Anwendung für WMC

Einer der Vorteile von WMC ist die Unterstützung, die es für die Erstellung von Microsoft Windows Installer-Anwendungen (MSI-Dateien) bietet. .MSI-Dateien bieten eine praktische Möglichkeit, eine WPF-Anwendung an WMC-Clientcomputer zu verteilen.

Bei der Erstellung einer einfachen Windows Installer-Anwendung für WordGame! wurden folgende Schritte ausgeführt:

  1. Klicken Sie in Visual Studio 2005 im Projektmappen-Explorer mit der rechten Maustaste auf die XBAP-Lösung, und wählen Sie Hinzufügen | Neues Projekt aus.

  2. Wählen Sie in der Liste Projekttypen die Option Andere Projekttypen | Setup und Bereitstellung aus.

  3. Wählen Sie in der Liste Vorlagen entweder Setup-Projekt oder Setup-Assistent aus. (Der Setup-Assistent führt Sie durch die Erstkonfiguration des Windows Installer-Setup-Projekts, das erstellt wird.)

  4. Klicken Sie mit der rechten Maustaste auf das neue Windows Installer-Projekt, klicken Sie auf Hinzufügen | Datei, und wählen Sie die folgenden Dateien aus:

    1. WordGameWMC.mcl

    2. WordGameWMC.exe

    3. WordGameWMC.exe.manifest

    4. WordGameWMC.xbap

    5. WordList.txt

    6. Keyboard.dll

  5. Wählen Sie auf der Registerkarte Dateisystem die Option Desktop des Benutzers aus.

  6. Klicken Sie in der Dateiliste mit der rechten Maustaste, und wählen Sie Verknüpfung zum Desktop des Benutzers erstellen aus.

  7. Wählen Sie Anwendungsordner | WordGameWMC.mcl aus.

  8. Erstellen Sie das Windows Installer-Projekt neu.

Wenn das Windows Installer-Projekt erstellt wird, wird eine MSI-Datei im Buildausgabeordner generiert. Diese wird anschließend auf den Clientcomputer kopiert und ausgeführt, um die Anwendung zu installieren. Bei der Standardinstallation wird ein Ordner erstellt, der dem folgenden Format entspricht:

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

Alle Dateien, die während der Konfiguration des Windows Installer-Projekts ausgewählt wurden, werden zusammen mit allen abhängigen Assemblys, die vom Windows Installer-Projekt ausgewählt wurden, in diesen Ordner kopiert.

Darüber hinaus wird eine Verknüpfung zu WordGameWMC.mcl auf dem Desktop platziert. Durch Doppelklicken auf oder Navigation zu dieser Verknüpfung kann die Anwendung innerhalb von WMC gestartet werden.

Tipp

Die Projektdatei für die Anwendung selbst muss manuell aktualisiert werden, damit der Pfad der XBAP-Datei, der zur generierten MCL-Datei hinzugefügt wird, für die Installation korrekt ist.

Diese Installation veranschaulicht die Grundlagen der Erstellung eines Windows Installer für eine WPF-Anwendung für WMC.

Für reale WPF-Anwendungen für WMC sollten Sie andere Installationstechniken verwenden.

Zuerst sollte die Anwendung eine HTML-Datei installieren, die einen Link zur eigentlichen auf einem Webserver gehosteten WPF-Anwendung bereitstellt. Das Hosten auf einem Webserver ermöglicht das Erstellen, die Veröffentlichung und die Übernahme der Anwendung durch den Clientcomputer, ohne dass der Benutzer die Anwendung erneut installieren muss.

Des Weiteren sollten Sie keine MCL-Dateien verwenden. Stattdessen sollten Sie einen Windows Installer erstellen, der die WMCMediaCenter.RegisterApplication-API aufruft oder das Befehlszeilendienstprogramm RegisterMceApp.exe ausführt. Weitere Informationen finden Sie im WMC SDK.

Siehe auch

Konzepte

Übersicht über XAML-Browseranwendungen von Windows Presentation Foundation

Weitere Ressourcen

Windows Media Center Software Development Kit