2012-06-19 3 views
0

나는 사용자 지정 컨트롤을 만들었습니다하지만이 같은 내용에 속성을 바인딩 할 수 없습니다 : 내가 컨트롤을 만들 때사용자 지정 컨트롤 바인딩 특성

<Style TargetType="control:Pie"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="control:Pie"> 
        <Border 
         Background="{TemplateBinding Background}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}"> 

         <ContentControl Content="{Binding Path=Test}"/> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

그리고 내 컨트롤

public string Test 
    { 
     get { return (string)GetValue(TestProperty); } 
     set { SetValue(TestProperty, value); } 
    } 
    public static readonly DependencyProperty TestProperty = 
     DependencyProperty.Register(
      "Test", 
      typeof(string), 
      typeof(Pie), 
      new PropertyMetadata(null)); 

에 Test 속성에서 문자열을 설정하지만보기에 아무 것도 나타나지 않습니다.

답변

2

TemplateBinding은 템플릿 컨트롤에 바인딩하는 데 사용되므로 ControlTemplate에서만 작동합니다. 위의 두 줄만 사용하여 Background, BorderBrush 및 BorderThickness에 이미 TemplateBinding을 사용했습니다.

Binding은 사용자로부터 "업무 관련"데이터를 가져 오는 데 사용되는 개체 인 DataContext에 바인딩됩니다. 그것은 당신의 컨트롤이 작동하는 방법의 독립과 엄지 손가락의 규칙으로

해야한다 : 당신이 ControlTemplate에 일반 바인딩을 사용하는 경우 RelativeSource, ElementName 또는 Source가 설정되어 있지 않는, 그것은 보통에 나타나지 않아야합니다 ControlTemplate 또는 스타일.

+0

아, 감사합니다! – Peekyou

관련 문제