2013-10-02 70 views
2

我有以下按鈕:如何綁定到按鈕的TextElement.Foreground?

<Button> 
     <Path Stroke="???" Data="M0,5 H10 M5,5 V10Z" /> 
</Button> 

我想要的路徑的筆觸屬性綁定到按鈕的下方的內容演示的TextElement.Foreground財產。有了它,它總是和任何其他按鈕中的文字顏色一樣。

我的嘗試:

{Binding Path=(TextElement.Foreground), RelativeSource={RelativeSource TemplatedParent}} 

我是什麼造成了System.IO.FileNotFoundException一個XamlParseException。它表示無法找到裝配RibbonControlsLibrary。我的錯是什麼?有沒有其他方法?

問候,Yggdrasil的

回答

4

我可以回答我自己的問題。

所有我需要的東西首先是:

{Binding Path=(TextElement.Foreground), RelativeSource={RelativeSource AncestorType=ContentPresenter}} 

但我也有例外。我看到我的項目有一個對RibbonControlsLibrary的引用。我刪除了這個並沒有得到任何例外。有趣的是,如果我使用明確的顏色,我沒有任何例外。

我發現是,在Windows 7標準主題的另一件事我可以用{Binding Foreground, ElementName=button},因爲它是這樣實現的:

<Trigger Property="IsEnabled" Value="false"> 
     <Setter Property="Foreground" Value="#ADADAD"/> 
</Trigger> 

在Windows 8中,這並不工作,因爲implemntation改爲:

<Trigger Property="IsEnabled" Value="false"> 
     [...] 
     <Setter Property="TextElement.Foreground" Value="{StaticResource Button.Disabled.Foreground}" TargetName="contentPresenter" /> 
</Trigger> 

問候,Yggdrasil。

1

您應該使用RelativeSource={RelativeSource AncestorType=Button}而不是RelativeSource={RelativeSource TemplatedParent}

RelativeSource={RelativeSource Self}也有效。

我認爲你所做的沒有奏效的原因是因爲路徑不在按鈕的模板中。這是它的內容。

+0

我試過這兩種情況,它總是和我得到的例外。 – Yggdrasil

+0

如果您刪除此綁定並將筆觸設置爲某種顏色,那麼您不會得到此異常? – Programmer

相關問題