首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何绑定到按钮的TextElement.Foreground?

如何绑定到按钮的TextElement.Foreground?
EN

Stack Overflow用户
提问于 2013-10-02 07:27:17
回答 2查看 2.6K关注 0票数 3

我有以下按钮:

代码语言:javascript
运行
复制
<Button>
        <Path Stroke="???" Data="M0,5 H10 M5,5 V10Z" />
</Button>

我希望将路径的Stroke属性绑定到按钮的基础内容演示程序的TextElement.Foreground属性。这样,它的颜色总是与任何其他按钮中的任何文本相同。

我试过的是:

代码语言:javascript
运行
复制
{Binding Path=(TextElement.Foreground), RelativeSource={RelativeSource TemplatedParent}}

我得到的是由XamlParseException引起的System.IO.FileNotFoundException。它说找不到程序集RibbonControlsLibrary。我的错是什么?还有别的路吗?

你好,伊格德莱尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-02 08:26:03

我可以自己回答问题。

首先,我需要的是:

代码语言:javascript
运行
复制
{Binding Path=(TextElement.Foreground), RelativeSource={RelativeSource AncestorType=ContentPresenter}}

但我也有例外。我发现我的项目以某种方式引用了RibbonControlsLibrary。我删除了这个也没有例外。有趣的是,如果我使用明确的颜色,我也不例外。

我发现的另一件事是,在Windows7标准主题中,我可以使用{Binding Foreground, ElementName=button},因为它的实现方式如下:

代码语言:javascript
运行
复制
<Trigger Property="IsEnabled" Value="false">
       <Setter Property="Foreground" Value="#ADADAD"/>
</Trigger>

在Windows 8中,这不起作用,因为实现被更改为:

代码语言:javascript
运行
复制
<Trigger Property="IsEnabled" Value="false">
       [...]
       <Setter Property="TextElement.Foreground" Value="{StaticResource Button.Disabled.Foreground}" TargetName="contentPresenter" />
</Trigger>

你好,伊格德莱西。

票数 6
EN

Stack Overflow用户

发布于 2013-10-02 07:40:18

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

RelativeSource={RelativeSource Self}也能工作。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19131899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档