2012-08-04 14 views
1
<ContentControl Content="Test"> 
    <ContentControl.ContentTemplate> 
     <DataTemplate> 
      <Border> 
       <ContentPresenter /> 
      </Border> 
     </DataTemplate> 
    </ContentControl.ContentTemplate> 
</ContentControl> 

throw됩니다 stackoverflow 예외입니다. 그러나 ContentPresenter 이외의 다른 컨트롤을 사용하는 경우 ItemPresenter도 작동합니다. 나는 ContentPresenter를 가지고 있다는 의미가 아니라 지식 만 알고 싶어한다는 것을 알고 있습니다. 왜 그것은 StackOverFlow 예외를 던지고 Intellisense가 추가 할 수 있다는 것을 보여주는 이유는 무엇입니까? (Intellisense에서 ContentPresenter를 잘못 가지지 않았 음을 의미합니다). 어떤 도움이 고도로 appericiated 것입니다. 아니면 Wpf의 결함입니다.ContentPresenter를 ContentTemplate에 추가 할 때 예외가 발생합니다.

+0

* intellisense가 알려주는 * 아무 것도 계산할 수 없습니다. –

+0

나는 귀하의 질문을 가장 일반적인 경우로 축소 시켰습니다. –

답변

0

ContentPresenter에 대한 MSDN 페이지는 말한다 :

ContentPresenter에 객체가 ContentControl을, 내용, ContentTemplate의 ControlTemplate이이며, ContentTemplateSelector 속성은 같은 이름의 속성에서 그 값을 얻을 ContentControl의 ContentPresenter 속성을 ContentSource 속성을 설정하거나 바인딩하여 템플릿 기반 부모의 다른 속성에서 이러한 속성 값을 가져올 수 있습니다.

나는 등, 그냥 다음 내부의 하나를 ContentTemplate에 ContentPresenter에에 템플릿을 적용하려고 노력 계속 한 다음 그 안에 다음 하나에, 그리고 때문이에 StackOverflow를 제공 상상

또한 다음과 같은 작업을 수행 할 수 있으므로 IntelliSense에서 이러한 종류의 시나리오를 확인하지는 않지만이 패턴이 항상 잘못된 것은 아닙니다.

<ContentControl Content="Test"> 
    <ContentControl.ContentTemplate> 
     <DataTemplate> 
      <Border> 
       <ContentPresenter ContentStringFormat="{}{0}" /> 
      </Border> 
     </DataTemplate> 
    </ContentControl.ContentTemplate> 
</ContentControl> 
관련 문제