(WPF교육, WPF학원)WPF Content Property란?
http://ojc.asia/bbs/board.php?bo_table=WPF&wr_id=157
ojc.asia
https://www.youtube.com/watch?v=innYXvo9WpA&list=PLxU-iZCqT52Cmj47aKB1T-SxI33YL7rYS&index=2&t=29s

https://www.youtube.com/watch?v=vlVKwC1ALmM&list=PLxU-iZCqT52Cmj47aKB1T-SxI33YL7rYS&index=4&t=37s

- ContentControl을 상속받은 컨트롤들은 ContentPropertyAttribute로 불리는 특별한 어트리큐트로 지정된 특별한 속성을 가지는데 이를 ContentPropery라고 한다. ContentProperty 이름은 Content가 대부분 이지만 아닌 경우도 있다. Button, Label은 Content, StackPanel은 Children이다.
- XAML에서 Button 태그 사이에 어떤속성에 대입되는 값인지 기술하지 않고 적으면 Button의 ContenetPropertyAttribute에서 기술한 Content 속성에 대입된다.
<Button>
//Button의 ContentPropertyAttribute에서 기술한 Content라는 속성에 대입
Hello! WPF~
</Button>
- XAML 프로세서가 XAML 의 자식 엘리먼트를 프로세싱할때 사용하는 정보
- ContentPropertyAttribute로 지정된 속성은 자식 요소를 담고있는 컨테이너 또는 부모 요소 일 수도 있다. 아래 코드는 Button의 내용으로 5 개의 자식 요소가 있는 StackPanel 컨테이너를 설정한다.
<Button Margin="10,201,100,40">
<StackPanel Orientation="Horizontal">
<Ellipse Height="60" Width="60" Fill="Red"/>
<TextBlock TextAlignment="Center"><Run Text=" Red Circle"/>
<TextBlock TextAlignment="Center"><Run Text=" "/></TextBlock>
<Rectangle Height="60" Width="120" Fill="Green"></Rectangle>
<TextBlock TextAlignment="Center"><Run Text=" Green Rectangle"/>
</StackPanel>
</Button>

- WPF 클래스 계층구조
- 모든 요소가 컨텐츠(Contents)로 사용될 수 있지만 모두 ContentPropertyAttribute에서 지정하는 특별한 속성을 가지고 있는 것은 아니다. ContentControl을 상속받은 요소(Window, Button, Label등)만 ContentProperty 사용 가능하다.
- Button의 ContentProperty인 Content 속성은 Object 타입으로 문자열, 객체, UIElement 또는 컨테이너로 설정할 수 있다.
- 일부 XAML 객체는 사용할 수 있는 Content 속성이 없을 수 있으므로 속성을 통해 설정해야 한다.
<Button Height="50" Margin="10,10,300,300" Content="Hello XAML" />
<Button Height="50" Margin="10,10,350,310">Hello XAML</Button>
// 아래 TextBox의 Text 속성에 값을 입력하지 않고 태그 사이에 넣어도
// Text 속성으로 인식하는 것은 ContentProperty로 정의 되었기 때문이다.
// ContentProperty는 XAML 프로세서가 자식 엘리먼트를 프로세싱할때
// 사용하는 기본 속성 정보이다.
<TextBox Name="TextBox1" Height="30" Width="200" Text="Hello~"/>
<TextBox Name="TextBox1" Height="30" Width="200" >
Hello~
</TextBox>