실버라이트 팁

Silverlight의 Navigation Framework 사용하기 - (1) Linus 평점: 없음 조회: 3526
안녕하세요
훈스닷넷 Silverlight 시삽 윤병걸입니다.
최근에 Silverlight의 Navigation Framework와 관련된 질문이 많아서 오늘의 포스팅 주제는 Navigation Framework는
도대체 어떻게 사용하는가? 에 대해서 쓰려고 합니다.


- What is Navigation Framework???
 
Silverlight3에서 추가된 Navigation Framework는 Web Browser의 사용자 경험을 그대로 Silverlight에서 구현한 듯한 
Framework입니다.
기본적인 기능은 서브페이지들의 Url을 통해서 이동할 수 있고 브라우저처럼 GoBack이나 GoFoword와 같은 
History관리도 할 수 있도록 구현한 Framework입니다.
 
- How to use ?????
 
자 그럼 간단하게 Navigation Framework의 사용법에 대해 알아보도록 하겠습니다.
 
Silverlight의 기본 템플릿으로 있는 Silverlight Navigation Application 이나 Silverlight Business Application을 만들면 Navigation Application을 위한 기본 구성이 자동으로 생성됩니다.
 

[Navigation Framework를 자동으로 구현해주는 기본 Template]



 

저는 이런 기본 템플릿을 사용하지 않고 Silverlight Application에서 구현해보도록 하겠습니다.

저는 다음과 같이 프로젝트를 구성하였습니다.


 

MainPage.xaml : MasterPage입니다. 이 페이지는 메인페이지로 각 서브페이지들은 이 페이지 내에서 이동됩니다.

Pages 폴더 : 서브페이지를 관리리하는 폴더입니다. (이 폴더는 선택사항입니다.)

Page1 ~ 3 : 서브 페이지들입니다.

ErrorWindow.xaml : Navigate가 실패했을 때 에러메세지를 보여주는 차일드 윈도우입니다.


 


[솔루션 구조]


 

1. 라이브러리 참조


 

먼저 Navigation Framework을 사용하기 위해 라이브러리를 추가하셔야 합니다.

  • System.Windows.Controls
  • System.Windows.Controls.Navigation


 

2. Frame 컨트롤 추가


Frame이라는 컨트롤은 Navigation Framework의 핵심 컨트롤입니다. 서브페이지들의 Uri에 해당하는 Page들로 이동시켜 주는 역할을 하는 컨트롤입니다.


 

추가하기 위해서는 xaml에 다음과 같은 네임스페이스를 추가하여야 합니다.


 

xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 
위의 네임스페이스가 추가되었다면 Frame컨트롤을 생성할 수 있습니다.
 
<navigation:Frame x:Name="frame" />


 

다음으로 HyperlinkButton을 생성하고 NavigateUri Property에 이동할 주소를 입력합니다.


 

<HyperlinkButton x:Name="page1LinkButton" NavigateUri="/Pages/Page1.xaml" Content="Page1" Margin="0,0,5,0"/>


실행 결과화면 입니다.
 

 
다음은 전체 소스입니다.
 

<UserControl x:Class="TrainingSolution.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
    xmlns:urimapper="system.windows.controls."
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.RowDefinitions>
            <RowDefinition Height="33"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Border BorderBrush="Black" Background="#B2000000"/>

        <StackPanel HorizontalAlignment="Right" Orientation="Horizontal" VerticalAlignment="Center">
            <HyperlinkButton x:Name="page1LinkButton" NavigateUri="/Pages/Page1.xaml" Content="Page1" Margin="0,0,5,0"/>
            <HyperlinkButton x:Name="page2LinkButton" NavigateUri="/Pages/Page2.xaml" Content="Page2" Margin="0,0,5,0"/>
            <HyperlinkButton x:Name="page3LinkButton" NavigateUri="/Page3/Page3.xaml" Content="Page3" Margin="0,0,5,0"/>
        </StackPanel>

        <navigation:Frame x:Name="frame" Grid.Row="1" >
            <TextBlock TextWrapping="Wrap" Text="This is MainPage" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="29.333"/>
        </navigation:Frame>
    </Grid>
</UserControl>

 
아주 간단하게 Navigation Framework을 구현해보았습니다.
하지만 위와 같이 HyperlinkButton을 사용하지 않고 Navigate를 하고 싶다거나 Browser를 통해 노출되는 Url을 감추고 싶다면 다른 방법을
사용해야 합니다.
 
다음 포스팅 때는 Silverlight Navigation Framework가 제공하는 몇가지 고급기능들에 대해서 알아보겠습니다.
감사합니다
 
출처 : ryunad.tistory.com

태그 : Framework Navigation silverlight
작성자 정보
Linus
Level 61
 [EXP.44/250]

메일:  비공개

글등록 +12 1932 덧글등록 +3 1263
자기소개
글 공유하기 |
  tweet facebook
2011-06-06 오후 11:56:52
나도한마디
사용자
Moros            [2011-06-20]
Level 2
 [EXP.14/16]
좋은 내용 감사합니다.
태그로 엮인글
[구인&교육정보] [외국계 AI솔루션 기업] Technical Support Engineer 채용  연민의굴레
[WPF Q&A] 창 크기에 따른 이미지 크기에 대한 질문입니다.[1]  궁금해욥
[C#.NET Q&A] visual studio 2010 .net framework 4.0 선택  깡갱하기
[ASP.NET Q&A] DB EF Designer 프로시저 질문요...ㅠ  닷넷고수가되잣
[C#.NET Q&A] Entity Framework 에서 테이블 맵핑 관련 질문입니다.  모리군
[ASP.NET Q&A] .net framework 업그레이드(4.5)에 따른 Activex 비활성화[2]+1  꾸레이
[C#.NET Q&A] 이런 .NET Framework 오류 보신분 계신가요?[2]+3  메로나
[C#.NET Q&A] 코딩 스타일 참고할만한 게 있을까요??[1]  질문
[구인&교육정보] [구인] Java Spring 기반 멤버십 회원관리 분석 시스템 개발  변재웅
[C#.NET Q&A] 스토어드 프로시저 호출시 entity framework가 나을까요? sqldatareader가 나을까요?[2]  phil
글리스트
DrawingVisual 객체를 이용해서 컨트롤 그리기  Linus
[실버라이트 스터디 3주차] 데이터그리드의 Row Detail과 Javascript Access #2 파일첨부 시선
[실버라이트 스터디 3주차] 데이터그리드의 Row Detail과 Javascript Access #1 파일첨부 시선
[실버라이트 스터디 2주차] 데이터그리드에서 이미지 추가/수정/삭제[1]  시선
SECTION02. 익스프레션 블렌드의 레이아웃  짱묜
[실버라이트 스터디] 6월 25일 더디어 실버라이트 스터디를 시작했습니다[5]  시선
실버라이트4에서 XAML 디버깅하기[4]+1  Linus
STEP03. 익스프레션 블렌드의 툴 박스 III  짱묜
STEP03. 익스프레션 블렌드의 툴 박스 II[1]  짱묜
STEP03. 익스프레션 블렌드의 툴 박스 I[2]  짱묜
 ★현재글->   Silverlight의 Navigation Framework 사용하기 - (1)[1]  Linus
STEP02. 익스프레션 블렌드의 인터페이스 - Results 패널, 그 외  짱묜
STEP02. 익스프레션 블렌드의 인터페이스 - Objects and Timeline 패널  짱묜
STEP02. 익스프레션 블렌드의 인터페이스 - Properties 패널  짱묜
STEP02. 익스프레션 블렌드의 인터페이스 - Projects 패널[1]  짱묜
STEP02. 익스프레션 블렌드의 인터페이스 - Help 메뉴  짱묜
STEP02. 익스프레션 블렌드의 인터페이스 - Window 메뉴  짱묜
STEP02. 익스프레션 블렌드의 인터페이스 - Tools 메뉴  짱묜
STEP02. 익스프레션 블렌드의 인터페이스 - Project 메뉴  짱묜
STEP02. 익스프레션 블렌드의 인터페이스 - Object 메뉴  짱묜
[WCF RIA Services]유용한 디버깅 팁!!!  Linus