WPF Tutorial 강좌 번역 #5
XAML의 기본
이전 장에서는 XAML의 정의와 사용 방법에 대해 설명했지만 XAML에서 컨트롤을 만드는 방법은 무엇입니까?
<예제 1>
다음 예제에서 볼 수 있듯이 XAML에서 컨트롤을 만드는 것은 이름을 쓰는 것만큼 쉽고 꺾쇠 괄호로 묶습니다. 예를 들어 Button은 다음과 같습니다.
<Button>
XAML 태그는 끝 태그를 쓰거나 시작 태그의 끝에 슬래시를 넣어 종료해야합니다.<Button></Button>
또는<Button />
<예제 2>
많은 컨트롤을 사용하면 시작 태그와 종료 태그 사이에 내용을 넣을 수 있습니다. 그러면 내용이 컨트롤의 내용이됩니다.
예를 들어 Button 컨트롤을 사용하면 시작 태그와 종료 태그 사이에 표시된 텍스트를 지정할 수 있습니다.
<Button>A button</Button>HTML은 대 / 소문자를 구분하지 않지만 XAML은 컨트롤 이름이 .NET Framework의 형식과 일치해야한다.
컨트롤의 속성에 해당하는 특성 이름도 마찬가지입니다. 다음은 태그에 속성을 추가하여 두 개의 속성을 정의하는 버튼입니다.
<Button FontWeight="Bold" Content="A button" />FontWeight 속성을 설정하여 굵은 텍스트를 표시 한 다음 시작 및 끝 태그 사이에 텍스트를 쓰는 것과 같은 Content 속성을 설정합니다. 그러나 Control의 모든 속성은 Control-Dot-Property 표기법을 사용하여 주 제어의 하위 태그로 표시되는 다음과 같이 정의 될 수 있습니다.
<Button> <Button.FontWeight>Bold</Button.FontWeight> <Button.Content>A button</Button.Content> </Button>결과는 위와 완전히 똑같습니다.이 경우 구문과 그 밖의 것은 없습니다. 그러나 많은 컨트롤을 사용하면 텍스트가 아닌 다른 컨트롤 (예 : 다른 컨트롤)을 사용할 수 있습니다.
<예제 3>
다음은 Button 내부에서 여러 TextBlock 컨트롤을 사용하여 동일한 버튼에 다른 색상의 텍스트가있는 예제입니다.
<Button> <Button.FontWeight>Bold</Button.FontWeight> <Button.Content> <WrapPanel> <TextBlock Foreground="Blue">Multi</TextBlock> <TextBlock Foreground="Red">Color</TextBlock> <TextBlock>Button</TextBlock> </WrapPanel> </Button.Content> </Button>Content 속성은 하나의 자식 요소 만 허용하므로 WrapPanel을 사용하여 다른 색상의 텍스트 블록을 포함합니다.
WrapPanel과 같은 패널은 WPF에서 중요한 역할을하며 나중에 더 자세히 설명 할 것입니다. 현재는 다른 컨트롤의 컨테이너로 간주합니다.
똑같은 결과는 다음과 같은 마크 업을 사용하여 수행 할 수 있습니다.
<Button FontWeight="Bold"> <WrapPanel> <TextBlock Foreground="Blue">Multi</TextBlock> <TextBlock Foreground="Red">Color</TextBlock> <TextBlock>Button</TextBlock> </WrapPanel> </Button>
Code vs. XAML
다행히도 위의 예제를 통해 XAML은 매우 쉽게 작성 될 수 있지만 여러 가지 방법으로 작성 할 수 있음을 보여줍니다.
위 예제와 같은 결과를 가져오는 C# 코드 :
Button btn = new Button(); btn.FontWeight = FontWeights.Bold; WrapPanel pnl = new WrapPanel(); TextBlock txt = new TextBlock(); txt.Text = "Multi"; txt.Foreground = Brushes.Blue; pnl.Children.Add(txt); txt = new TextBlock(); txt.Text = "Color"; txt.Foreground = Brushes.Red; pnl.Children.Add(txt); txt = new TextBlock(); txt.Text = "Button"; pnl.Children.Add(txt); btn.Content = pnl; this.Content = btn;
댓글 없음:
댓글 쓰기