我用了两天来解决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/