Wpf 如何绑定到按钮的TextElement.前台?

Wpf 如何绑定到按钮的TextElement.前台?,wpf,binding,Wpf,Binding,我有以下按钮: <Button> <Path Stroke="???" Data="M0,5 H10 M5,5 V10Z" /> </Button> 我得到的是System.IO.FileNotFoundException引起的XamlParseException。它说找不到程序集RibbonControlsLibrary。什么是我的错?还有别的办法吗 关于,Yggdrasil您应该使用RelativeSource={RelativeSour

我有以下按钮:

<Button>
        <Path Stroke="???" Data="M0,5 H10 M5,5 V10Z" />
</Button>
我得到的是System.IO.FileNotFoundException引起的XamlParseException。它说找不到程序集RibbonControlsLibrary。什么是我的错?还有别的办法吗


关于,Yggdrasil

您应该使用
RelativeSource={RelativeSource AncestorType=Button}
而不是
RelativeSource={RelativeSource TemplatedParent}

RelativeSource={relativesourceself}
也可以工作


我认为您所做的工作不起作用的原因是因为路径不在按钮的模板中。这是它的内容。

我可以回答我自己的问题

首先,我需要的是:

{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中,这不起作用,因为实施已更改为:

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

[...]

您好,Yggdrasil。

如果您删除此绑定并将笔划设置为某种颜色,您不会遇到此异常?
<Trigger Property="IsEnabled" Value="false">
       [...]
       <Setter Property="TextElement.Foreground" Value="{StaticResource Button.Disabled.Foreground}" TargetName="contentPresenter" />
</Trigger>