我有以下按钮:
<Button>
<Path Stroke="???" Data="M0,5 H10 M5,5 V10Z" />
</Button>我希望将路径的Stroke属性绑定到按钮的基础内容演示程序的TextElement.Foreground属性。这样,它的颜色总是与任何其他按钮中的任何文本相同。
我试过的是:
{Binding Path=(TextElement.Foreground), RelativeSource={RelativeSource TemplatedParent}}我得到的是由XamlParseException引起的System.IO.FileNotFoundException。它说找不到程序集RibbonControlsLibrary。我的错是什么?还有别的路吗?
你好,伊格德莱尔
发布于 2013-10-02 08:26:03
我可以自己回答问题。
首先,我需要的是:
{Binding Path=(TextElement.Foreground), RelativeSource={RelativeSource AncestorType=ContentPresenter}}但我也有例外。我发现我的项目以某种方式引用了RibbonControlsLibrary。我删除了这个也没有例外。有趣的是,如果我使用明确的颜色,我也不例外。
我发现的另一件事是,在Windows7标准主题中,我可以使用{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>你好,伊格德莱西。
发布于 2013-10-02 07:40:18
您应该使用RelativeSource={RelativeSource AncestorType=Button}而不是RelativeSource={RelativeSource TemplatedParent}。
RelativeSource={RelativeSource Self}也能工作。
我认为您所做的工作失败的原因是因为路径不在按钮的模板中。这是它的内容。
https://stackoverflow.com/questions/19131899
复制相似问题