다음을 통해 공유


Windows Presentation Foundation Windows Media Center에서 호스팅되는 응용 프로그램 개요

업데이트: 2007년 11월

Microsoft WMC(Windows Media Center)는 Windows Vista Home Premium Edition, Windows Vista Ultimate 및 Microsoft Windows XP Media Center Edition 2005와 함께 설치되는 디지털 미디어 엔터테인먼트 응용 프로그램입니다. WMC를 통해 사용자는 디지털 및 고화질 텔레비전, DVD, 음악, 비디오, 라디오 및 사진을 비롯한 다양한 미디어를 관리하고 사용할 수 있습니다.

Windows Media Center 스크린 샷

WMCPC(개인용 컴퓨터)는 디지털 미디어를 보고 재생하는 데 사용될 수 있습니다. 이를 2' 사용자 경험이라고 합니다. 사용자가 마우스, 키보드 및 모니터를 사용하여 PC에서 WMC를 작동하기 때문입니다.

그러나 WMCPC는 리모컨 또는 원격 키보드 입력을 지원하도록 구성될 수 있습니다. 이 정렬에서 사용자는 WMCPC에 있지 않아도 작동할 수 있습니다. 이를 10' 사용자 경험이라고 합니다. 이 환경은 대형 모니터 그리고 텔레비전과 사운드 시스템 같은 일반적인 홈 엔터테인먼트 하드웨어를 포함하는 WMC 구성에 적합합니다.

WMC에서 제공하는 핵심 기능은 디지털 미디어를 관리하고 재생하는 응용 프로그램 집합으로 구성되어 있습니다. 그러나 WPF를 사용하여 WMC의 Windows Vista 버전에 대한 사용자 지정 응용 프로그램을 만들 수 있습니다.

이 항목에서는 WMC에 대한 WPF 응용 프로그램의 개발을 소개하고 다음 내용을 다룹니다.

  • 간단한 WPF 게임 응용 프로그램 빌드 및 배포

  • 2' 및 10' WMC 사용자 경험 모두를 대상으로 지정

  • WMC를 지원하도록 WPF 컨트롤 사용자 지정

  • WPF에 대한 새 WMC 고유 컨트롤 사용

  • .NET Framework에서 지원 활용

  • 관리되는 API를 통해 WMC와 통합

  • Visual Studio 2005를 사용하여 개발 프로세스 향상

WMC의 응용 프로그램 개발에 대한 자세한 내용은 WMC SDK(Windows Media Center 소프트웨어 개발 키트)를 참조하십시오.

이 항목에는 다음 단원이 포함되어 있습니다.

  • WMC에서 WPF 응용 프로그램 호스팅
  • WMC용 WPF 응용 프로그램 시작
  • WMC 사용자 경험
  • WMC용 WPF 컨트롤 업데이트
  • 추가적인 WMC용 WPF 컨트롤
  • .NET Framework 3.0 클래스 라이브러리 사용
  • WMC 관리되는 API와 통합
  • Visual Studio를 통한 개발
  • WMC용 WPF 응용 프로그램 설치
  • 관련 항목

WMC에서 WPF 응용 프로그램 호스팅

WPF에서는 두 가지 유형의 응용 프로그램, 즉 독립 실행형 응용 프로그램과 브라우저에서 호스팅되는 응용 프로그램의 개발을 허용합니다. 독립 실행형 응용 프로그램은 자체 창 및 대화 상자를 제공하여 응용 프로그램 콘텐츠를 호스팅합니다. 브라우저에서 호스팅되는 응용 프로그램은 두 가지 유형이 있습니다. 하나는 느슨한 XAML 응용 프로그램이고 다른 하나는 XBAP입니다. 둘 다 Internet Explorer 7에서 호스팅됩니다. 그러나 Internet Explorer 7은 WPF에 대해 아무것도 모릅니다. Internet Explorer 7이 WPF 콘텐츠를 호스팅할 수 있도록 WPF는 Internet Explorer 호스팅 프록시 같은 응용 프로그램을 제공합니다. 이 프록시는 다른 응용 프로그램 대신 WPF 콘텐츠를 호스팅할 수 있으며, Internet Explorer에서 호스트 방법을 자체적으로 알고 있는 동일한 공통 Windows 인프라를 사용하여 빌드됩니다.

WMC도 이 프록시를 호스팅할 수 있으며, 따라서 WPF 브라우저에서 호스팅되는 응용 프로그램을 호스팅할 수 있습니다. 즉, 일반적으로는 WPF 응용 프로그램 개발 플랫폼을 활용할 수 있고, 구체적으로는 브라우저에서 호스팅되는 응용 프로그램의 탐색 및 보안 기능을 활용할 수 있습니다.

이 항목의 나머지 부분에서는 WMC의 단어 게임 응용 프로그램을 사용합니다. Windows Media Center용 단어 게임 데모를 참조하십시오.

WMC용 WPF 응용 프로그램 시작

단어 게임 응용 프로그램은 다음의 세 파일로 구성되어 있습니다(모든 XBAP의 최소값).

  • wordgamewmc.exe. XBAP입니다.

  • wordgamewmc.exe.manifest. ClickOnce 응용 프로그램 매니페스트입니다.

  • wordgamewmc.xbap. ClickOnce 배포 매니페스트입니다.

XBAP는 ClickOnce를 사용하여 시작됩니다. 이를 위해서는 응용 프로그램이 응용 프로그램 및 배포 매니페스트 파일과 함께 구성되어야 합니다. WPF 응용 프로그램 만들기(WPF)를 참조하십시오. 특히 XBAP는 .xbap 파일을 탐색하거나 두 번 클릭할 때 시작됩니다. 시작될 때 ClickOnce의 기본 동작은 WPF 대신 응용 프로그램을 다운로드하는 것입니다. 그 이후에는 다음 그림과 같이 WPF가 Internet Explorer를 시작하고 응용 프로그램으로 이동합니다.

Word Game 스크린 샷

그러나 WMC 응용 프로그램을 시작하기 위해서는 사용자가 WMC 링크 파일(.mcl)을 탐색하거나 두 번 클릭합니다. .mcl 파일은 탐색되거나 두 번 클릭될 때 WMC 호스트에 의해 열리도록 Windows에 구성된 XML 구성 파일(ehshell.exe)입니다. WMC SDK를 참조하십시오.

참고

.mcl 파일은 개발 프로세스 동안 편리하지만 WMC 응용 프로그램을 설치하고 시작하기 위한 메커니즘으로는 권장되지 않습니다. WMC용 WPF 응용 프로그램 설치를 참조하십시오.

.mcl 파일이 열릴 때 WMC 호스트는 .mcl 파일에 포함된 구성 지침을 구문 분석하고 처리합니다. 이 중 가장 중요한 것은 열어야 하는 응용 프로그램의 이름입니다. 이 메커니즘을 사용하여 XBAP를 시작하도록 구성된 .mcl 파일을 만듭니다.

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

이 .mcl 파일이 WMC 호스트에 의해 처리될 때 WMC 호스트는 .xbap 파일로 이동합니다. 따라서 ClickOnce에서 다음 그림과 같이 WMC 호스트 자체에 응용 프로그램을 시작할 수 있습니다.

Word Game 스크린 샷

참고

WMC가 느슨한 XAML 응용 프로그램을 호스팅하도록 하려면 다음과 같이 .mcl 파일을 .xaml 파일과 함께 구성하십시오.

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

XBAP 자체는 전혀 변경하지 않고 하나의 구성 파일을 추가함으로써 WPF 브라우저에서 호스팅되는 응용 프로그램이 WMC에 의해 있는 그대로 호스팅될 수 있습니다.

그러나 WMC 사용자 경험은 꽤 구체적이므로 일관성과 스타일을 위해 XBAPWMC 응용 프로그램은 WMC 사용자 경험과 통합되도록 디자인되어야 합니다. 이 항목의 나머지 부분에서는 WMC 사용자 경험의 주요 측면과 이를 감지하도록 XBAP를 빌드하는 방법을 다룹니다.

WMC 사용자 경험

일관된 사용자 경험을 제공하는 것은 응용 프로그램 개발의 핵심적인 부분입니다. WMC 사용자와 관련하여 응용 프로그램은 다음과 같은 방법으로 일관성을 유지해야 합니다.

  • 테마. 응용 프로그램 사용자 인터페이스의 전체적인 스타일입니다.

  • 레이아웃. 위치 및 크기를 제어합니다.

  • 탐색. 키보드, 마우스 및 리모컨을 사용하여 응용 프로그램의 사용자 인터페이스를 탐색합니다.

WMC 사용자 경험에 대한 자세한 내용은 WMC SDK에 있지만 아래 항목에서도 자세한 개요를 볼 수 있습니다.

테마

다음 그림에서 볼 수 있듯이 WMC 테마에는 여러 가지 요소가 있습니다.

Windows Media Center 스크린 샷

그 중에서 가장 눈에 띄는 요소는 거울 같은 파란색 배경과 컬러로 빛나는 커다란 둥근 글꼴입니다. 결과는 모니터 바로 앞에 있는 2' 사용자와 텔레비전에서 떨어져 있을 수 있는 10' 사용자 모두가 쉽게 구분할 수 있는 모양을 만드는 것입니다. WPF 응용 프로그램은 모양에 대한 이 일반적인 접근 방식을 따르는 반면 WMC는 기본적으로 WPF 응용 프로그램이 사용하도록 이 정보를 노출하지 않습니다. 다행히 WPF는 스타일 및 테마를 지정할 수 있는 풍부한 인프라를 제공하므로 원하는 경우 이를 활용하여 WMC 모양을 쉽게 복제할 수 있습니다. 또는 WPF를 사용하여 전혀 새롭고 시각적으로 풍부한 사용자 경험을 만들 수 있지만 레이아웃 및 탐색 고려 사항을 염두에 두어야 합니다.

예를 들어 페이지에 WMC 스타일 배경을 만들려면 다음과 같이 하면 됩니다.

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

테마는 일반적으로 여러 개의 요소로 구성되어 있기 때문에 사용자 지정 리소스 사전을 사용하여 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>

리소스 사전을 응용 프로그램에 통합하려면 응용 프로그램 정의의 Application.Resources 요소를 구성하여 리소스 사전 .xaml 파일을 참조하십시오.

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

다음 그림은 WMC 테마의 전체적인 스타일 및 리소스 보완으로 업데이트된 단어 게임을 보여 줍니다.

Word Game 스크린 샷

WMC에서는 응용 프로그램 고유 및 브랜드 고유의 요소를 통합하는 응용 프로그램 테마를 개발하는 것을 제한하지 않습니다. 그러나 WMC 사용자 경험을 위한 응용 프로그램을 디자인할 때는 다음을 비롯하여 응용 프로그램 테마의 여러 요소를 고려해야 합니다.

  • 텔레비전 안전 색상: 시각적으로 섞여서 혼동을 주기 쉬운 밝은 색상을 사용하지 마십시오(예: 녹색, 빨간색).

  • 대비: 텍스트와 배경이 시각적으로 구분되도록 시각적 요소의 전경색과 배경색이 적절한 대비를 이루도록 선택하십시오.

  • 글꼴: serif 없는 보다 큰 크기의 글꼴을 사용하여 가독성을 높일 수 있습니다. 또한 콘텐츠에서 불필요한 단어를 제거하면 텍스트 영역을 보다 쉽게 읽을 수 있게 만들 수 있습니다.

  • 단추: 단추의 모양을 간단하게 유지하십시오.

  • 이미지: 이미지를 만들 때 디스플레이 품질 및 크기와 다운로드 크기를 고려하십시오.

  • 애니메이션: 애니메이션을 적절하게 사용하십시오.

WMC 응용 프로그램 테마와 관련된 자세한 내용은 WMC SDK를 참조하십시오.

레이아웃

사용자가 WMC 호스트 위에 마우스를 놓을 때 다음 그림과 같이 WMC 호스트가 마우스 중심 탐색을 위한 추가 탐색 UI를 표시하게 되는 새로운 문제가 발생합니다.

WordGame 샘플 스크린 샷

이 그림에서는 응용 프로그램 UI의 왼쪽 위 및 오른쪽 아래 부분이 탐색 크롬으로 덮여 있는 것을 볼 수 있습니다. 이러한 상황에서는 탐색 UI를 고려하도록 UI의 레이아웃을 업데이트할 수 있습니다. 단어 게임의 경우에는 응용 프로그램 제목을 UI의 오른쪽으로 이동하고 높이가 50픽셀인 행을 홈 페이지 콘텐츠를 호스팅하는 Grid 요소의 아래쪽에 추가하는 것이 포함됩니다.

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

이러한 행을 추가한 효과는 다음 그림에서 나타납니다.

WordGame 샘플 스크린 샷

따라서 WMC용 XBAP는 다양한 레이아웃 동작과 WMC의 일관성을 감지할 수 있어야 합니다.

고려해야 하는 주요 레이아웃에는 다음이 포함됩니다.

  • 응용 프로그램 레이아웃: 사용자가 응용 프로그램의 사용자 인터페이스를 쉽게 익히고 친숙하게 받아들일 수 있도록 응용 프로그램의 레이아웃은 간단하고 일관되어야 합니다.

  • WMC 레이아웃: 응용 프로그램의 레이아웃은 실용적이고 일반 WMC 사용자 경험과 일관성을 유지해야 합니다. 그래야 WMC에 익숙한 사용자가 응용 프로그램을 보다 쉽게 익힐 수 있습니다.

  • 비디오: 응용 프로그램이 WMC 관리되는 API를 사용하여 비디오를 표시하는 경우 WMC가 비디오를 화면 왼쪽 아래에서 재생합니다. 따라서 이를 고려하여 사용자 인터페이스를 배치해야 합니다.

  • 해상도: 응용 프로그램의 사용자 인터페이스 및 레이아웃은 1024x768 해상도를 기준으로 삼아야 합니다. WPF는 1024x768에 맞춰 사용자 인터페이스를 배치하고 사용자 인터페이스의 크기를 조정할 때 레이아웃이 유지되도록 하는 데 도움을 주기 위해 레이아웃 지원을 제공합니다. 자세한 내용은 레이아웃 시스템을 참조하십시오.

WMC 레이아웃과 관련된 자세한 내용은 WMC SDK를 참조하십시오.

탐색

기본적으로 테마와 레이아웃은 응용 프로그램의 사용자 인터페이스를 구성하는 컨트롤이 어떻게 정렬되는지를 지시합니다. 반면에 탐색은 사용자가 컨트롤에 도착하고 컨트롤 사이를 이동하는 방법을 지시합니다.

현재 사용자 입력을 받고 있는 컨트롤을 포커스를 받고 있다고 표현합니다. XBAP 응용 프로그램의 페이지가 표시될 때 특정 컨트롤에 포커스를 두려면 태그를 사용하면 됩니다.

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

2' 및 10' 작업 모드를 모두 지원하기 위해 이를 수행해야 합니다.

2' 및 10' 모드 모두에서 사용자가 WMC 응용 프로그램의 컨트롤을 탐색할 수 있도록 하려면 응용 프로그램이 마우스, 키보드(연결된 키보드 또는 원격 키보드) 및 리모컨을 사용한 탐색을 처리해야 합니다. 기본적으로 다음을 비롯하여 마우스 및 키보드를 사용한 탐색은 WPF 응용 프로그램에서와 동일합니다.

  • 컨트롤을 클릭하면 해당 컨트롤로 포커스가 이동합니다.

  • Tab 키를 누르면 컨트롤 간에 포커스가 이동합니다.

  • 단추의 IsDefault 속성을 사용하여 Return 키를 누를 때 해당 단추가 기본적으로 클릭되는지를 지정합니다.

  • 단추의 IsCancel 속성을 사용하여 Escape 키를 누를 때 해당 단추가 기본적으로 클릭되는지를 지정합니다.

리모컨을 지원하기 위해서는 방향 탐색을 지원해야 합니다. 즉, 사용자가 리모컨의 위쪽, 아래쪽, 왼쪽 및 오른쪽 단추를 클릭하여 컨트롤 포커스를 이동할 수 있도록 해야 합니다. WPF 컨트롤의 특정 하위 집합을 사용하는 경우 방향 탐색을 지원하기 위해 특수 코드를 작성할 필요는 없습니다.

WMC용 WPF 컨트롤 업데이트

WPF는 컨트롤 호스트를 제공하지만 기본적으로 해당 컨트롤의 하위 집합만 WMC 응용 프로그램에서 사용할 수 있습니다. 결정적인 요인은 리모컨을 사용하여 탐색하고 조작할 수 있는지의 여부입니다. 다음 그림은 리모컨 입력을 지원하는 WPF 컨트롤의 하위 집합을 보여 줍니다(WMC 스타일 사용).

Windows Media Center 스크린 샷

이러한 제한이 다른 WPF 컨트롤의 사용을 방해하지는 않습니다. 하지만 WMC에서 작동하도록 하려면 추가적인 작업을 수행해야 합니다. 예를 들어 다음 그림에서 WMC에서 호스팅되는 것으로 표시되는 Slider 컨트롤을 고려해 보십시오.

슬라이더 스크린 샷

기본적으로 Slider는 마우스, 키보드 또는 리모컨을 사용하여 표시하고 탐색할 수 있습니다. 그러나 리모컨을 사용하여 Slider 밖으로 이동할 수는 없습니다. Slider는 리모컨의 위쪽, 아래쪽, 왼쪽 및 오른쪽 단추 클릭을 Slider 값을 높이거나 낮추는 것으로 해석하기 때문입니다.

이러한 상황에서는 원하는 컨트롤과 해당 컨트롤을 조작하기 위한 추가적인 리모컨용 컨트롤을 포함하는 복합 컨트롤을 만드는 것이 한 가지 해결책입니다. 예를 들어 다음 코드를 사용하면 Slider를 계속 두 개의 단추로 사용할 수 있습니다. 하나는 Slider 값을 높이고, 다른 하나는 Slider 값을 낮춥니다.

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

다음 그림에서는 앞의 예제를 실행한 결과를 보여 줍니다.

슬라이더 스크린 샷

추가적인 WMC용 WPF 컨트롤

다음 그림과 같이 TextBox 컨트롤이 문제가 될 수도 있습니다. 리모컨을 사용하는 경우 TextBox에 실제로 문자를 입력할 수가 없습니다. 리모컨 사용자가 하나 이상의 문자를 선택할 수 있도록 해주는 컨트롤이 필요합니다. 구조상 전체 키보드를 포함할 수 없는 모바일 장치에서 이미 사용 중인 일반적인 기술은 사용자 인터페이스에 키보드를 표시하여 사용자가 필요한 문자를 선택하도록 하는 것입니다.

샘플에는 다음 그림과 같이 WMC를 대상으로 하는 WPF 응용 프로그램의 소프트 키보드 컨트롤이 포함되어 있습니다.

소프트 키보드 컨트롤

이는 샘플과 함께 제공되는 Keyboard.dll 어셈블리에서 SoftKeyboardTextBox 클래스로 구현되어 있으며 MCEControls 네임스페이스에 있습니다. 이것을 사용하려면

  1. MCEControls와 함께 제공되는 Keyboard 어셈블리에 대한 참조를 추가합니다.

  2. 콘텐츠에서 어셈블리에 XML 네임스페이스 선언을 추가합니다.

  3. 선언할 XAML을 추가하고 SoftKeyboardTextBox를 구성합니다.

다음 코드가 결과를 보여 줍니다.

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

.NET Framework 3.0 클래스 라이브러리 사용

WMC용 WPF 응용 프로그램은 컨트롤로 제한되지 않습니다. WPF 응용 프로그램은 추가 기능을 얻기 위해 .NET Framework을 활용할 수도 있습니다. 따라서 독립 실행형 또는 브라우저에서 호스팅되는 WPF 응용 프로그램에서 사용하는 것과 동일한 코드를 사용할 수 있습니다.

예를 들어 WMC에서 호스팅되는 응용 프로그램의 데이터를 저장하고 로드하는 코드는 WMC가 아닌 응용 프로그램과 동일합니다. 보안 제약에 대해서도 마찬가지입니다. Windows Presentation Foundation 보안을 참조하십시오. 응용 프로그램이 어디에서 시작되었는지에 따라 WMC에서 호스팅되는 응용 프로그램이 로컬 디스크에 쓸 수 있는지가 결정됩니다.

안전하게 하려면 응용 프로그램에서 격리된 저장소를 사용하여 파일을 보관할 수 있습니다.

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

WMC 관리되는 API와 통합

WMC용 WPF 응용 프로그램은 운영 체제와 함께 설치되고 두 어셈블리(Microsoft.MediaCenter.dllMicrosoft.MediaCenter.UI.dll)에 위치한 관리되는 API 집합을 통해 WMC 자체의 기능과도 통합될 수 있습니다.

이러한 API를 사용하여 미디어 콘텐츠 조사, 구성 및 재생을 비롯한 다양한 WMC 서비스와 통합할 수 있습니다. 자세한 내용은 WMC SDK에서 찾아볼 수 있습니다.

이러한 기능의 한 가지 측면은 응용 프로그램의 사용자 경험을 WMC가 더욱 통합하는 것입니다. 예를 들어 WPF 응용 프로그램이 메시지 상자를 통해 사용자에게 알려야 하는 경우 다음과 같은 내용을 표시할 수 있습니다.

WordGame 샘플 스크린 샷

그러나 표준 WPF 메시지 상자의 모양은 WMC 환경과 맞지 않습니다. 다행히도 WMC 관리되는 API는 자체적인 WMC 스타일 메시지 상자를 제공합니다. 이 메시지 상자를 다음과 같이 코드에 사용할 수 있습니다.

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

그러면 다음과 같은 WMC 대화 상자가 표시됩니다.

WordGame 샘플 스크린 샷

WMC 관리되는 API를 심도 있게 이해하기 위해서는 WMC SDK를 참조해야 합니다.

참고

XBAP가 WMC에서 호스팅되는 경우를 제외하고는 WMC 관리되는 API를 참조하는 XBAP를 실행할 수 없습니다.

Visual Studio를 통한 개발

지금까지 이 항목은 다음을 비롯하여 WMC용 XBAP를 빌드할 때 다루어야 하는 핵심적인 프로그래밍 문제에 대해 다루었습니다.

  • 일반 XBAP 응용 프로그램 만들기

  • .mcl 파일을 사용하여 XBAP를 WMC에서 시작

  • XBAP를 위한 WMC 테마 만들기

  • WMC 관리되는 API 참조

WMC를 빌드하는 각 XBAP에서 이러한 문제를 다루어야 합니다. WMC용 XBAP를 빌드할 때마다 이러한 요소를 다시 만드는 대신 WMC SDK가 함께 설치되는 Microsoft Visual Studio 2005의 Media Center Application(WPF) 프로젝트 템플릿을 사용할 수 있습니다.

참고

WMC 프로젝트 템플릿은 Visual Studio 2005와 "Fidalgo"가 모두 설치된 경우에만 설치됩니다.

Media Center Application(WPF) 프로젝트 템플릿은 기본적으로 이러한 요소가 포함된 Visual Studio 2005 프로젝트를 만듭니다.

새 Media Center Application(WPF)을 만들려면

  1. Visual Studio 2005를 엽니다.

  2. **Microsoft Visual Studio | 파일 | 새로 만들기 | 프로젝트 | Visual C# | .NET Framework 3.0 | Media Center Application (WPF)**을 선택합니다.

다음 목록은 기본적으로 프로젝트 템플릿에서 생성되는 주요 항목을 보여 줍니다.

  • readme.txt 파일. WPF용 XBAP를 빌드하고 디버깅하기 위한 몇 가지 유용한 텍스트가 포함되어 있습니다.

  • WMC 관리되는 어셈블리에 대한 참조

  • MediaCenterTheme.xaml 파일은 기본 페이지 Page1.xaml에 기본적으로 적용되는 WMC 스타일의 전체 집합을 포함하는 리소스 사전입니다.

  • 표준 XBAP 출력과 함께 생성되는 .mcl 파일

Microsoft Visual Basic에 대해서도 이와 동등한 프로젝트 템플릿이 있습니다.

프로젝트 디버깅

Visual Studio 2005의 WMC 호스트에서 XBAP를 디버깅하려면 다음을 수행해야 합니다.

  1. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성 | 디버그를 선택합니다.

  2. 시작 프로그램c:\windows\system32\presentationhost.exe로 설정합니다.

  3. 명령줄 인수-debug로 설정합니다.

  4. **Microsoft Visual Studio | 디버그 | 디버깅 시작(또는 F5 키 누름)**을 선택하여 응용 프로그램을 실행합니다.

  5. 빌드 프로세스 동안 생성된 .mcl 파일을 두 번 클릭합니다(\bin\debug\assemblyname.mcl).

.mcl 파일에 지정된 응용 프로그램이 시작되고 WMC에서 호스팅됩니다.

WMC용 WPF 응용 프로그램 설치

WMC 사용의 장점 중 하나는 Microsoft Windows Installer 응용 프로그램(.msi 파일)을 쉽게 만들 수 있다는 것입니다. .msi 파일은 WPF 응용 프로그램을 WMC 클라이언트 컴퓨터에 배포하는 유용한 방법입니다.

다음 단계를 따라 단어 게임을 위한 간단한 Windows Installer 응용 프로그램을 만듭니다.

  1. Visual Studio 2005의 솔루션 탐색기에서 XBAP 솔루션을 마우스 오른쪽 단추로 클릭하고 추가 | 새 프로젝트를 선택합니다.

  2. 프로젝트 형식 목록에서 기타 프로젝트 형식 | 설치 및 배포를 선택합니다.

  3. 템플릿 목록에서 설치 프로젝트 또는 설치 마법사를 선택합니다. 설치 마법사는 생성된 Windows Installer 설치 프로젝트의 초기 구성 과정을 안내해 줍니다.

  4. 새 Windows Installer 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가 | 파일을 선택하고 다음 파일을 선택합니다.

    1. WordGameWMC.mcl

    2. WordGameWMC.exe

    3. WordGameWMC.exe.manifest

    4. WordGameWMC.xbap

    5. WordList.txt

    6. Keyboard.dll

  5. 파일 시스템 탭에서 사용자 바탕 화면을 선택합니다.

  6. 파일 목록에서 사용자 바탕 화면에 바로 가기 만들기를 선택합니다.

  7. 응용 프로그램 폴더 | WordGameWMC.mcl을 선택합니다.

  8. Windows Installer 프로젝트를 다시 빌드합니다.

Windows Installer 프로젝트가 빌드되면 빌드 출력 폴더에 .msi 파일이 생성됩니다. 그런 다음 클라이언트 컴퓨터에 복사되고 실행되어 응용 프로그램을 설치합니다. 기본 설치는 다음 형식을 따른 폴더를 만드는 것입니다.

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

Windows Installer 프로젝트를 구성하는 동안 선택한 모든 파일이 Windows Installer 프로젝트에 의해 선택된 종속 어셈블리와 함께 이 폴더에 복사됩니다.

또한 WordGameWMC.mcl의 바로 가기가 바탕 화면에 배치됩니다. 이 바로 가기를 두 번 클릭하거나 탐색하여 WMC 내에서 응용 프로그램을 시작할 수 있습니다.

참고

생성된 .mcl 파일에 추가된 .xbap 파일의 경로가 설치를 위해 정확하도록 응용 프로그램 자체의 프로젝트 파일을 수동으로 업데이트해야 합니다.

이 설치는 WMC용 WPF 응용 프로그램의 Windows Installer를 만드는 기초 과정을 확인하는 데 사용할 수 있는 데모입니다.

실제 WMC용 WPF 응용 프로그램의 경우에는 설치 기술이 달라야 합니다.

첫째, 응용 프로그램은 실제 웹 서버에서 호스팅되는 WPF 응용 프로그램에 대한 링크를 제공하는 HTML 파일을 설치해야 합니다. 웹 서버에서 호스팅하면 클라이언트 컴퓨터가 응용 프로그램을 다시 설치하지 않고도 새로운 버전의 응용 프로그램을 만들고 게시하고 선택할 수 있습니다.

둘째, .mcl 파일을 사용해서는 안 됩니다. 대신 WMCMediaCenter.RegisterApplicationAPI을 호출하는 Windows Installer를 만들거나 RegisterMceApp.exe 명령줄 유틸리티를 실행해야 합니다. 자세한 내용은 WMC SDK를 참조하십시오.

참고 항목

개념

Windows Presentation Foundation XAML 브라우저 응용 프로그램 개요

기타 리소스

Windows Media Center Software Development Kit