2012-10-06 31 views
0

我爲我的用戶控件創建了一個FocusVisualStyle,並且已成功實現覆蓋。我的問題是我想從父級使用一些屬性,但TemplateBinding似乎不工作。FocusVisualStyle模板,將屬性綁定到父級

的控制的簡化版本定義如下:

<Style TargetType="{x:Type local:Thought}"> 
    <Setter Property="FocusVisualStyle" Value="{StaticResource ThoughtFocusStyle}" /> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type local:Thought}" > 
     <Border BorderThickness="{TemplateBinding BorderThickness}" 
       BorderBrush="{StaticResource ThoughtBorderNormalBrush}"> 
      <!-- other controls --> 
     </Border> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

我自FocusVisualStyle定義如下:

<Style x:Key="ThoughtFocusStyle" TargetType="{x:Type Control}"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type Control}"> 
     <Border BorderThickness="{TemplateBinding BorderThickness}" 
       BorderBrush="{StaticResource ThoughtBorderFocusBrush}"/> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

如果ThoughtFocusStyle我硬編碼了borderThickness,它按預期工作(標籤到控制中),但使用TemplateBinding不。我玩過RelativeSource,但似乎無法獲得正確的語法(對於WPF來說還是很新的)。

回答

4

嘗試:

<Border BorderThickness="{Binding 
          RelativeSource={RelativeSource Mode=FindAncestor,   
          AncestorType=Control}, 
          Path=BorderThickness}"> 
+0

的工作,感謝您的正確的語法。 – Spevy

+0

這發生了一些時間..與TemplateBinding,我給你的確切等效的模板綁定...我不記得在什麼情況下它不起作用 –

+0

試試這個以及: 「{Binding RelativeSource = { RelativeSource Mode = TemplatedParent},Path = BorderThickness}「 –

相關問題