2010.01.21 12:00

1.RichTextArea Part 1
2.RichTextArea Part 2
3.Accessing Web Camera and Microphone
4.Right Click Mouse Events
5.MouseWheel API
6.Using Silverlight Controls As Drop Targets
7.DataGrid Enhancements
8.Printing API Basics
9.Hosting HTML Content
10.Accessing the Global Clipboard Programmatically 
11.Using the ViewBox Control 
12.Asynchronous Data Validation 
13.BiDi and Right-to-Left Support 
14.Notification API
15.Local File Access 
16.RIA Services support in Visual Studio 2010 

블로그 이미지 김영욱 차장 Microsoft Korea  .NET Evangelist
Enterprise UX 를 위한  UI 기술과 SOA, Cloud Computing, NUI등 다양한 분야의 접목과 응용을 통해 최적의 IT 인프라 구축을 위해서 노력하고 있다.
Email: iwinkey@hotmail.com
Blog: http://winkey.tistory.com

 

 
<그림1> Web browser 컨트롤을 사용해서 RSS를 읽어 들인 예

HTML을 Silverlight에서 바로 보여줄 수 있다면…. 할 수 있는 게 엄청 많아 질 것입니다. Silverlight 4 부터는 HTML을 Silverlight에서 바로 보여줄 수 있는 컨트롤이 추가 되어서 Silverlight에서 할 수 있는 게 엄청 많아 졌습니다.

HTML을 불러올 수 있는 방법은 html 파일을 직접 읽어오는 방법 혹은 html 문자열을 이해하는 방법 그리고 타 사이트에 있는 HTML을 직접 읽어오는 방법 등 여러 가지 방법이 있을 수 있는데 HTML 컨트롤의 치명적인 한 가지 제약 사항이 있습니다. 그것은 바로 OOB(Out of browser) 상태에서만 지원되는 점입니다.

 

웹 브라우저 컨트롤을 사용하기 위해서는 다음과 같이 한 줄만 입력하면 됩니다.


 <WebBrowser x:Name="HtmlContent" Height="600" Width="800” />


 하지만 웹 브라우저 컨트롤은 기본적으로 OOB에서만 실행되기 때문에 다음과 같은 코드를 사용해서 OOB 상태에서만 실행되는 것을 확인해야 합니다.


 if (!App.Current.IsRunningOutOfBrowser)
{
    WarningText.Visibility = Visibility.Visible;
}


 두 번째로 현재 실행되고 있는 Silverlight 애플리케이션이 이미 해당 컴퓨터의 로컬에 설치되었는지를 확인하고 설치가 되지 않았으면 설치 버튼을 노출 시켜주기 위해서 다음과 같은 코드가 필요합니다.


 if (App.Current.InstallState == InstallState.Installed)
{
    InstallButton.Visibility = Visibility.Collapsed;
}
else
{
    return;
}


 위의 두 가지 소스에서 보면 알 수 있지만 App 객체는 현재 실행되고 있는 애플리케이션의 정보를 알 수 있게 해준다.
그럼 해당 컴퓨터에서 자기 자신을 설치하기 위한 코드는 어떤 것일까? 놀랍게도 딱 한 줄만 사용하면 됩니다.


 App.Current.Install();


 Web Browser 컨트롤에서 특정한 페이지로 이동하기 위해서는 다음과 같이 Navigate 메소드를 사용하면 됩니다.


 HtmlContent.Navigate(new Uri(“http://winkey.tistory.com”));


 하지만 Silverlight는 좀 더 재미있는 방법도 제공되고 있는데 로컬에 있는 HTML 파일을 읽어드릴 수도 있습니다. 이럴 경우에는 아래와 같은 방법으로 접근 할 수 있습니다.


 HtmlContent.Navigate(new Uri(App.Current.Host.Source, “./test.html”));


재미있는 사실은 Web Browser 컨트롤에서는 그냥 메모리상에서 문자열로 조합되어 있는 html도 역시 출력할 수 있습니다.


HtmlContent.NavigateToString(“<P>Hello World<P>”);


이럴 경우에는 Navigate 메소드가 아니라 NavigateToString을 사용하셔야 합니다.

 
<그림2> NavigateToString을 사용해서 HTML 문자열을 읽어드린 경우.


이미 이 글을 읽으시는 분들의 머리 속에는 이것을 활용할 아이디어가 무궁무진하게 흘러 나오기 시작하는 느낌이 들 것입니다. 첨부된 샘플을 보시면 XML 타입으로 되어 있는 RSS를 파싱하는 방법도 함께 포함되어 있으니 꼭 참조하시기 바랍니다.

신고


티스토리 툴바