2012-06-19 339 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中有效。上面只有2行已經使用了TemplateBinding作爲Background,BorderBrush和BorderThickness。

Binding另一方面綁定到DataContext,這是一個用於從用戶獲取「業務」相關數據的對象。它應該是你的控件是如何工作的獨立的和

作爲一個經驗法則:如果您在ControlTemplate,使用普通的約束力不具有RelativeSourceElementNameSource集,它通常不應該出現在ControlTemplate或Style。

+0

哦,是的,謝謝! – Peekyou