프로그래밍/실버라이트 20

[Silverlight] get Client Ip Address

방법 1. Web Service를 이용하는 방법 방법 2. Server Side Script 이용하는 방법 방법 1. 소개 WcfService 에서 System.Web.HttpContext.Current.Request.UserHostAddress; 를 이용하여 받아 온다. 또 다른 방법으로는 아래 글을 참조 하자. /* NOTE: This is another way to do it but the one method is more straight forward: if( HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null) CustomerIP = HttpContext.Current.Request.ServerVariable["..

[실버라이트] 브라우져의 현재 싸이즈 가져오는 팁

실버라이트를 브라우져에서 구동 시킬 때 브라우져의 현재 싸이즈를 알아야 할 경우가 있다. 이때 사용 하는 코드 App.Current.Host.Content.ActualHeight; --> 브라우져의 현재 높이 App.Current.Host.Content.ActualWidth; --> 브라우져의 현재 길이 위 코드를 사용하면 브라우져의 현재 싸이즈를 알수가 있고, 브라우져의 싸이즈가 변경될 때마다 처리해줘야 하는 일들이 있다면, App.Current.Host.Content.Resized += new EventHandler(Content_Resized); 위 코드로 Resized 이벤트 핸들러를 연결 하자. 그리고 아래에서 구현해주면 끝. // -----------------------------------..

[실버라이트] HTMLTextBlock -- HTML 파싱이 가능한 CUSTOM TextBlock

일반적인 실버라이트에서 제공하는 TextBlock은 Html 파싱 기능을 제공 하지 않는다. 허나.. 우선 샘플을 보자. http://cesso.org/Samples/SilverlightHtmlTextBlock/ 보였는가? TextBlock 특성상 모든 HTML 태그를 변환해주지는 않겠지만 기본적인 것은 된다. 무엇을 상속 받아 어떻게 구현 했는지 궁금하다. 시간의 압박으로 아직 소스코드 분석 까지는 하지 않았다. 위 데모의 소스 코드는 싸이트에서 찾을 수 있겠지만 추후 귀차니즘을 피하기 위해서 업로드 ㅎ

[실버라이트] TextBox 에 MouseLeftButtonUp 이벤트 주기

TextBox 에 이벤트 핸들러 연결을 동적으로 다음과 같이 하였을 경우에는 참 난감 하다........휴... TextBox textBox_startDate = new TextBox(); textBox_startDate .MouseLeftButtonUp += new MouseButtonEventHandler(textBlock_start_MouseLeftButtonUp); private void textBlock_start_MouseLeftButtonUp(object sender , MouseButtonEventArgs e) { ~~~~~~~~~ 중 략 ~~~~~~~~~ } 이렇게 TextBox에 이벤트 핸들러 연결을 했을 경우 MouseLeftButtonUp 이벤트는 동작 하지 않으며, MouseLef..

[실버라이트] 로컬 이미지 파일 미리 보기

로컬 파일에 대한 Access 권한 때문에 Image 객체에 Source 셋팅 시 Image temp_img = new Image(); temp_img.Source = "C:/temp.png"; 이렇게는 접근을 할 수가 없다. OpenFileDialog 를 통해서 파일을 읽어 온다 하더라도 Select 한 파일의 FullName을 얻을 려고 할 경우 Security Exception이 발생 할 것이다. 즉, 로컬 파일에 대한 Access는 불가능 하다는 것이다. 해결 방법 이라면, Active X 이용 이라던지, OOB 를 이용 하는 것인데, OOB 이용으로 권한 상승을 시켜준다 해도, 제한적으로만 접근이 가능 하다.^^(My Document 폴더 아래로만...가능) 그렇 다면, 파일 업로드 전에 선택한..

[실버라이트] JSON 구문 분석

HTTP 기반 서비스에 대한 요청 만들기에 설명된 대로 HTTP 기반 웹 서비스에 요청한 후 Stream 형식의 responseStream 개체 내부에 다음 JSON이 반환된다고 가정한다. {"IsMember" : true, "Name" : "John", "Age" : 24} 실버라이트 4에서 JSON 을 분석 하는 데 사용할 수 있는 방법은 다음과 같다. DataContractJsonSerializer 사용 Json 을 역직렬화(Deserialization) User 형식 정의 DataContractJsonSerializer 의 객체를 사용 하여 responseStream을 User 개체에 역직렬화 하는 방법 JSonObject 및 LINQ 사용 Silverlight 에서는 JsonPrimitive, ..

[실버라이트] JSON 정리 및 구문 분석

정의 JSON( JavaScript Object Notation) 경량의 데이터 교환 포멧 인터넷에서 자료를 주고 받을 때 그 자료를 표현 하는 방법으로 자료의 종류에 큰 제한은 없으며 특히 컴퓨터 프로그램의 변수 값을 표현하는 데 적합 하다. JSON 의 형식은 자바스크립트 구문 형식을 취한다. 장점 가독성이 좋고, 데이터 크기가 작다. JSON은 텍스트로 이루어져 있으므로, 사람과 기계 모두 읽고 쓰기 쉽다. 파싱이 빠르다. 메모리 사용량이 적다. RFC 표준으로 승인 되었다. 프로그래밍 언어와 플랫폼에 독립적이므로, 서로 다른 시스템간에 객체를 교환하기에 좋다. 객체 구조를 쉽게 표현 할 수 있다. 자바스크립트 문법을 채용했기 때문에, 자바스크립트에서 eval 명령으로 곧바로 사용 가능 하다. 이런..

[실버라이트] C# - 4.0 dynamic

dynamic 형식을 var 형식과 비교 해서 설명 하겠습니다. C# 3.0 에서 var 형식이 새롭게 등장 했습니다. VB 개발자라면 var 형식을 이미 접해 봤을 것입니다. var 와 dynamic 형식은 처음 접하는 개발자들은 이게 뭐지? 라는 생각이 들겁니다. var 와 dynamic 은 초기 선언 시 타입 지정이 없다는 것입니다. 그럼 타입 지정은 언제 이루어 지나? 이것이 var 와 dynamic 의 차이 입니다. var 은 컴파일 시점에서 타입 확정이 이루어 지고, dynamic 은 런타임(Runtime)시 타입이 확정 됩니다. 그렇다면 dynamic을 왜 사용할까? 지금 까지의 C#은 컴파일 될 때 타입이 모두 확정이 되어야 했다. 하지만 COM Interop, .Net Object ref..

[실버라이트] 이벤트 라우팅

실버라이트의 모든 객체들은 서로의 포함 관계에 따라 위, 아래 개념을 가집니다. 쉽게 말하면, 레이아웃 컨트롤은 하위에 다른 자식 컨트롤들을 가질 수가 있고, 이런 경우 레이아웃 컨트롤은 자식 컨트롤보다 위에 있으며 자식 컨트롤들은 아래에 있다고 표현 합니다.( 부모 / 자식 관계라 표현) 다음과 같은 XAML을 트리로 표현 하면, 이렇게 트리 구조를 그린 이유는 이벤트 라우팅을 이해하기 위해서는 상, 하위 개념을 알아야 하기 때문입니다. 실버라이트의 이벤트 라우팅은 가장 하위에 있는 객체에서 이벤트가 발생하면 이벤트는 하위에서 상위로 한 단계씩 올라가면서 발생합니다. 이렇게 트리 구조를 따라 이벤트가 발생하는 방식을 이벤트 라우팅이라고 하며, 아래에서 위로 올라가는 이벤트 라우팅 방식을 버블링(Bubb..

[실버라이트] 쿠키 저장 / 적용 / 삭제 방법

1. 쿠키 셋팅 Cookie Class를 이용 하지 않고 HtmlPage.Document.Cookies 를 이용해 Cookie에 접근 하는 방법 쿠키 셋팅 형식은 기본적으로 key & value 쌍으로 'String key = String value ;' 형식을 취한다. (ex. Key1=value1 ; key2=value2 ; key3=value3;) 예제로 쿠키 셋팅 형식에 대해 다시 설명 하자면 String key = "name" 이고 String value = "팔랑이" 라면 String new_cookie = "name = 팔랑이 ; expires = Wed, 4 Jan 2011 17:32:22 GMT" ; 이다. 즉, 쿠키 구분은 ; (세미콜론) 으로 하고 여러 key&value 쌍을 넣을 수..