asp.net2006. 4. 29. 15:26

1. 테마
a. 테마는 페이지와 컨트롤의 모양을 정의하고 웹 응용 프로그램의 페이지, 전체 웹 응용 프로그램 또는 서버의 모든 웹 응용 프로그램 간에 일관된 모양을 적용할 수 있는 속성 설정의 모음이다.
b. 테마는 스킨, CSS 스타일시트, 이미지 및 기타 리소스와 같은 일련의 요소로 구성된다. 테마에는 최소한 스킨이 포함된다. 테마는 웹 사이트 또는 웹 서버의 특수 디렉터리에 정의된다.
c. 테마는 웹 사이트에서 \App_Themes 폴더의 하위 폴더에 만들어진다. 각 테마는 \App_Themes 폴더의 개별 하위 폴더이다.

2. 스킨
a. 스킨 파일은 파일 이름 확장명이 .skin이며 Button, Label, TextBox 또는 Calendar 컨트롤과 같은 개별 컨트롤의 속성 설정을 포함한다.
b. 컨트롤 스킨 설정은 컨트롤 태그 자체와 비슷하지만 테마의 일부로 설정되는 속성만 포함한다.
c. 테마 폴더에 .skin 파일을 만든다. .skin 파일에는 여러 컨트롤 형식에 대한 하나 이상의 컨트롤 스킨이 포함될 수 있다. 각 컨트롤에 대해 별도로 스킨 파일을 정의하거나 테마에 있는 모든 스킨을 단일 파일로 정의할 수 있다.
d. 스킨 파일 예

<asp:button runat="server" BackColor="lightblue" ForeColor="black" />

e. 기본 스킨
i. 테마를 페이지에 적용할 때 같은 형식의 모든 컨트롤에 기본 스킨이 자동으로 적용된다. SkinID 특성이 없는 컨트롤 스킨은 기본 스킨이다.
f. 명명된 스킨
i. SkinID 속성이 설정된 컨트롤 스킨이다.
ii. 명명된 스킨은 형식별로 컨트롤에 자동으로 적용되지 않는다. 그 대신 컨트롤의 SkinID 속성을 설정하여 명명된 스킨을 컨트롤에 명시적으로 적용할 수 있다.
iii. 명명된 스킨을 만들면 응용 프로그램에서 동일 컨트롤의 각 인스턴스에 대해 서로 다른 스킨을 설정할 수 있다.


3. 테마 설정
a. 단일 웹 응용 프로그램에 대한 테마를 정의할 수도 있고 웹 서버의 모든 응용 프로그램에서 사용할 수 있는 전역 테마를 정의할 수도 있다.
i. @Page 지시문의 Theme 또는 StyleSheetTheme 특성을 사용하여 개별 페이지에 배치할 수도 있다.
<%@ Page Theme="ThemeName" %>

ii. 응용 프로그램 구성 파일의 <pages> 요소를 설정하여 응용 프로그램의 모든 페이지에 적용할 수도 있다. Machine.config 파일에서 <pages> 요소를 정의하면 서버의 웹 응용 프로그램에 있는 모든 페이지에 테마가 적용된다.

<pages theme="ThemeName" />

iii. 프로그래밍 방식 적용 (반드시 PreInit이벤트에 해야 한다)

Protected void Page_PreInit(object sender, EventArgs e)
{
switch (Request.QueryString["theme"])
{
  case "Blue":
   Page.Theme = "BlueTheme";
   break;
  case "Pink":
   Page.Theme = "PinkTheme";
   break;
}
}


4. 테마 적용의 예
a. 한 페이지에 Pink테마, Blue테마를 적용시켜서 버튼의 색깔을 바꿔 본 예제






Posted by kkongchi