2012-10-03 3 views
1

표시되지. ContentControl을 내가 <code>UserControl</code> 같은 고정 XAML 레이아웃 (보다는 일반적인 응용 일반 템플리트)가 사용자 정의 <code>ContentControl</code>이 내용

는 이전에이 레이아웃은 여분의 마크 업을 없었다, 그래서 그것은 문자 그대로 : 이것은 잘 작동

<ContentControl x:Class="MyControls.CustomViewControl" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"> 
</ContentControl> 

.

는 지금 내용 주위에 테두리를 넣고 싶지, 그래서에 XAML을 변경 한 :

<ContentControl x:Class="MyControls.CustomViewControl" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"> 
    <ContentControl.Template> 
     <ControlTemplate> 
      <Border BorderThickness="5" BorderBrush="LightGreen"> 
       <ContentPresenter /> 
      </Border> 
     </ControlTemplate> 
    </ContentControl.Template> 
</ContentControl> 

이 국경을 보여주고 있지만 내용.

나는 ContentPresenter에 대한 명시 적 구속력을 공급하려고 :

<ContentPresenter Content="{Binding Path=Content, RelativeSource={RelativeSource Self}}"/> 

을하지만이 차이를하지 않았다.

설정 명시 적 Content 작업 않습니다 바인딩 내용이 작동하지 않는 이유

<ContentPresenter Content="TEST" /> 

누구나 알아? 나는 일반적인 일반 템플릿으로 돌아갈 수 있다고 생각하지만, UserControl처럼 직접 할 수 있다면 더 쉽습니다.

답변

2

내부에서 TemplateBinding 대신 BindingControlTemplate :

<ContentControl.Template> 
    <ControlTemplate> 
     <Border BorderThickness="5" BorderBrush="LightGreen"> 
      <ContentPresenter Content="{TemplateBinding Content}"/> 
     </Border> 
    </ControlTemplate> 
</ContentControl.Template> 
+3

이 작동하지 않았다,하지만 난 다음을 가지고 있기 때문에 그것이 올바른 방향으로 절 지적 오류. 내 템플릿의 TargetType을 설정해야했습니다. 이 작업을 수행 할 때 암시 적이기 때문에 바인딩이 필요하지 않습니다. 건배. – GazTheDestroyer

+0

누군가가이 문제에 대한 해결책을 갖고있을 수 있습니다 : 나는 리소스 딕셔너리의 {TemplateBinding Title}에 장군의 내용을 설정했습니다. 디자이너는 내용을 표시하지 않습니다 (런타임에 작동합니다) 나는 창 제목이 아직 발생하지 않은 창 초기화 중에 적용 되었기 때문에 이것이라고 생각합니다. 흠, 방법이 있니? –

4

컨트롤 템플릿은 TargetType 추가

<ContentControl.Template> 
    <ControlTemplate TargetType="Button"> 
     <Border BorderThickness="5" BorderBrush="LightGreen"> 
      <ContentPresenter /> 
     </Border> 
    </ControlTemplate> 
</ContentControl.Template>