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 | 신청 수준 앱 수준에서 스타일을 정의하면 전체 애플리케이션에서 액세스 할 수 있습니다. |