2017-12-19 3 views
0

WPF의 추가 XAML 내용에 "홀"을 지정하는 방법이 있습니까?WPF의 새 기본 창의 내용 루트 지정

예를 들어 MySuperWindowBase을 만들고 레이아웃이있는 XAML이있는 경우 MySuperWindowBase의 하위 클래스 레이아웃에 추가 콘텐츠를 배치 할 위치를 어떻게 지정할 수 있습니까? 간단한 예를 들어

MySuperWindowBase :

<Window> 
    <StackPanel> 
    <!-- Force child content here --> 
    </StackPanel> 
</Window> 

MyChildWindow :

<MySuperWindowBase> 
    <TextBlock>Place me in the StackPanel</TextBlock> 
</MySuperWindowBase> 
+1

'ContentPresenter'와 (과) 같은 소리입니다. 귀하의 설명은 그 이상으로 당신에게 말하기에는 너무 모호합니다. –

+0

@EdPlunkett 업데이트했습니다. –

+0

이 Xamarin 또는 WPF입니까? StackLayout은 WPF에 존재하지 않습니다. Xamarin에서 WPF를 사용하고 있다면 WPF 답변을 드릴 수 있습니다. –

답변

2

원하는 것은 기본 클래스 창에 템플릿을 제공하는 것입니다. Gusdor의 대답은 모든 것을 설명하지만 컨트롤의 Content 속성을 표시하는 템플릿을 작성하는 방법입니다. 여기에 창에 대한 컨트롤 템플릿의 설명이 들어 있습니다. 창의 내용은 ChildWindow.xaml 파일의 <Window></Window> 요소 내부에있는 내용입니다. <TextBlock>Place me in the StackPanel</TextBlock>은 질문의 자리 표시 자 콘텐츠입니다. 기본적으로 XAML 비주얼 트리 조각은 윈도우의 Content 속성에 할당됩니다.

컨트롤은 내용을 표시합니다. 기본적으로 템플릿 부모의 Content 속성을 확인하지만 ContentPresenter의 ContentSource 속성을 템플릿이 적용된 부모의 다른 속성 이름으로 설정하여 변경할 수 있습니다. 마법이 있어야처럼

<ControlTemplate TargetType="Window" x:Key="WindowBaseTemplate"> 
    <Grid> 
     <Border 
      BorderBrush="Gray" 
      BorderThickness="1" 
      Margin="10" 
      Padding="20" 
      Background="GhostWhite" 
      > 
      <ContentPresenter 
       /> 
     </Border> 
    </Grid> 
</ControlTemplate> 

ContentPresenter 보이지만 그냥 기본값입니다.

+0

편집을 환영합니다. D – Gusdor