我有一个WindowsPhone 8和ControlTemplate的绑定问题。下面是一个例子:
<UserControl.Resources>
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<ContentControl x:Name="ContentContainer" Foreground="Red" Content="{TemplateBinding Content}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Button>
<Button.Content>
<TextBlock Text="123"/>
</Button.Content>
<Button>
字符串
我想在我的Button.Content中使用我在ContentContainer中定义的前景“Red”。但没有任何效果.目标是在我的Style中更改VisualState中的ContentContainer前景。有人能帮助我吗?
3条答案
按热度按时间fslejnso1#
你应该做:
字符串
而不是放一个文本块。
但是,如果你想保留文本块,你应该这样做:
型
0sgqnhkj2#
这是一个相当复杂的解决方案,但它是我发现的唯一一个工作:
首先,一些Util的东西:
字符串
而且...
型
现在,让我们定义一个执行绑定的行为:
型
此行为所做的是将控件的前台绑定到指定父级模板中找到的ContentControl的前台。这是您如何使用它(在xaml中):
型
ewm0tg9j3#
现在是2023年,Windows phone已经不存在了。我来到这里寻找WPF .NET的解决方案,当时没有找到解决方案。
既然我已经找到了一个解决方案(至少是WPF.NET的),我就把它贴在这里,以防其他人也像我一样来到这里寻找灵感。
解决方案是使用
TextElement
:ContentControl
上设置TextElement.Foreground
Foreground
上使用TemplateBinding
。现在,前景色被绑定到ContentControl的内容。
以OP的代码为例:
字符串