.net - 将路径中的填充属性绑定(bind)到样式中 ContentControl 中的 Foreground 属性

标签 .net silverlight silverlight-3.0 windows-phone-7

我用了两天来解决silverlight问题:带有样式的模板控制按钮。在具体按钮中,我有一个以路径为内容的 Canvas 。问题是我希望路径填充颜色从模板中的 ContentControl 绑定(bind)到前景。

但是,我无法弄清楚如何构造绑定(bind)以到达前台。例如,如果我想使用 TextBlock,它将自动从 Style 中获取 Forground 颜色。正如预期的那样,文本具有前景色。绑定(bind)的原因是动画控制前景,我希望它传播到路径的填充颜色。有任何想法吗?

该模板包含以下内容:

<Style x:Key="PathButtonStyle" TargetType="Button">

... Animations and state stuff

  <Border x:Name="ButtonBackground" BorderBrush="{TemplateBinding BorderBrush}" >
    <ContentControl x:Name="ContentContainer" 
      ContentTemplate="{TemplateBinding ContentTemplate}" 
      Content="{TemplateBinding Content}" 
      Foreground="{TemplateBinding Foreground}" />
  </Border>
</Style>

在我的布局中,我有以下内容:
<Button x:Name="Play" Style="{StaticResource PathButtonStyle}" >
  <Canvas x:Name="PlayIcon">
    <Path Data="F1M191.4839,96.1763L177.9149,106.5173L177.9149,85.9293z" 
          Fill="{PATH TO CONTENTCONTROLS FOREGROUND}" />
  </Canvas>
</Button>

我已经清理了代码并删除了一些东西以使其更具可读性,但我希望你能理解它背后的想法。

最佳答案

由于您为按钮命名,您可以使用绑定(bind) ElementName范围:

<Button x:Name="Play" Style="{StaticResource PathButtonStyle}" >
    <Canvas x:Name="PlayIcon">
        <Path Data="F1M191.4839,96.1763L177.9149,106.5173L177.9149,85.9293z" 
            Fill="{Binding Foreground, ElementName=Play}" />
    </Canvas>
</Button>

关于.net - 将路径中的填充属性绑定(bind)到样式中 ContentControl 中的 Foreground 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3856724/

相关文章:

c# - Dapper 行到 json

.net - 为什么 .NET 的条件属性会导致副作用被删除?

c# - 在 C# 中的数组中搜索字符串的开头

c# - 如何使用 ASP.NET MVC + SignalR 强制服务器不断发送事件数据?

silverlight - 调试 Silverlight 未命中断点

c# - 将 ICollection 属性与 WCF 服务一起使用

c# - Silverlight:在代码隐藏中切换 CustomVisualStateManager 的 VisualStates

Linux 服务器上来自 Silverlight 的 MySQL

html - Silverlight 网页上的图标

css - Silverlight 中的常规样式和 CSS 支持