XAML-스타일

XAML 프레임 워크는 응용 프로그램의 모양을 개인화하고 사용자 지정하는 몇 가지 전략을 제공합니다. 스타일은 객체의 일부 속성을 설정하고 일관된 모양을 위해 여러 객체에서 이러한 특정 설정을 재사용 할 수있는 유연성을 제공합니다.

  • 스타일에서는 높이, 너비 및 글꼴 크기와 같은 개체의 기존 속성 만 설정할 수 있습니다.

  • 컨트롤의 기본 동작 만 지정할 수 있습니다.

  • 단일 스타일에 여러 속성을 추가 할 수 있습니다.

스타일은 컨트롤 집합에 균일 한 모양을 제공하는 데 사용됩니다. 암시 적 스타일은 지정된 형식의 모든 컨트롤에 모양을 적용하고 응용 프로그램을 단순화하는 데 사용됩니다.

세 개의 버튼이 있고 모두 같은 너비와 높이, 같은 글꼴 크기, 같은 전경색으로 보여야한다고 상상해보세요. 버튼 요소 자체에 이러한 모든 속성을 설정할 수 있으며 다음 다이어그램과 같이 모든 버튼에 대해 여전히 괜찮습니다.

그러나 실제 앱에서는 일반적으로 정확히 동일하게 표시되어야하는 이러한 기능이 많이 있습니다. 물론 버튼뿐만 아니라 일반적으로 텍스트 블록, 텍스트 상자 및 콤보 상자 등이 앱 전체에서 동일하게 보이기를 원할 것입니다. 확실히 이것을 달성하는 더 나은 방법이 있어야합니다.styling. 스타일은 다음 다이어그램과 같이 둘 이상의 요소에 속성 값 집합을 적용하는 편리한 방법으로 생각할 수 있습니다.

몇 가지 속성과 함께 XAML로 생성 된 세 개의 버튼이 포함 된 예제를 살펴 보겠습니다.

<Window x:Class = "XAMLStyle.MainWindow" 
   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"
   xmlns:local = "clr-namespace:XAMLStyle" mc:Ignorable = "d" 
   Title = "MainWindow" Height = "350" Width = "604"> 
	
   <StackPanel> 
      <Button Content = "Button1" Height = "30" Width = "80" Foreground = "Blue" 
         FontSize = "12" Margin = "10"/>
      
      <Button Content = "Button2" Height = "30" Width = "80" Foreground = "Blue" 
         FontSize = "12" Margin = "10"/>
      
      <Button Content = "Button3" Height = "30" Width = "80" Foreground = "Blue" 
         FontSize = "12" Margin = "10"/> 
   </StackPanel> 
	
</Window>

위의 코드를 보면 모든 버튼에 대해 높이, 너비, 전경색, 글꼴 크기 및 여백 속성이 동일하게 유지된다는 것을 알 수 있습니다. 위의 코드가 컴파일되고 실행되면 다음과 같은 출력이 표시됩니다.

이제 같은 예를 살펴 보겠습니다. 이번에는 style.

<Window x:Class = "XAMLStyle.MainWindow" 
   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"
   xmlns:local = "clr-namespace:XAMLStyle" mc:Ignorable = "d" 
   Title = "MainWindow" Height = "350" Width = "604">
	
   <Window.Resources> 
      <Style x:Key = "myButtonStyle" TargetType = "Button">
         <Setter Property = "Height" Value = "30"/> 
         <Setter Property = "Width" Value = "80"/> 
         <Setter Property = "Foreground" Value = "Blue"/> 
         <Setter Property = "FontSize" Value = "12"/> 
         <Setter Property = "Margin" Value = "10"/> 
      </Style>
   </Window.Resources> 
	
   <StackPanel> 
      <Button Content = "Button1" Style = "{StaticResource myButtonStyle}"/>
      <Button Content = "Button2" Style = "{StaticResource myButtonStyle}"/>
      <Button Content = "Button3" Style = "{StaticResource myButtonStyle}"/>
   </StackPanel>
	
</Window>

스타일은 리소스 사전에 정의되며 각 스타일에는 고유 한 키 식별자와 대상 유형이 있습니다. <style> 안에는 스타일에 포함될 각 속성에 대해 여러 setter 태그가 정의되어있는 것을 볼 수 있습니다.

위의 예에서 각 버튼의 모든 공통 속성은 이제 스타일로 정의 된 다음 StaticResource 태그 확장을 통해 스타일 속성을 설정하여 고유 한 키로 각 ​​버튼에 스타일을 할당합니다.

위의 코드를 컴파일하여 실행하면 다음과 같은 출력 창이 생성됩니다.

이렇게하는 것의 장점은 즉시 명백합니다. 해당 스타일을 범위 내 어디에서나 재사용 할 수 있으며 변경해야하는 경우 각 요소 대신 스타일 정의에서 한 번만 변경하면됩니다.

어떤 수준에서 스타일이 정의되면 해당 스타일의 범위가 즉시 제한됩니다. 따라서 범위, 즉 스타일을 사용할 수있는 위치는 정의한 위치에 따라 다릅니다. 스타일은 다음 수준에서 정의 할 수 있습니다-

Sr. 아니요 레벨 및 설명
1 제어 수준

컨트롤 수준에서 스타일을 정의하는 것은 해당 특정 컨트롤에만 적용 할 수 있습니다.

2 레이아웃 레벨

모든 레이아웃 수준에서 스타일을 정의하는 것은 해당 레이아웃과 하위 요소에서만 액세스 할 수 있습니다.

창 수준

창 수준에서 스타일을 정의하는 것은 해당 창의 모든 요소에서 액세스 할 수 있습니다.

4 신청 수준

앱 수준에서 스타일을 정의하면 전체 애플리케이션에서 액세스 할 수 있습니다.