1
我有一个标准的Button
Style
应用于我的应用程序,该应用程序指定将文本内容从白色变为黑色的鼠标悬停样式。为此,我尝试修改按钮模板,删除ContentPresenter
并用TextBlock
替换它。然而,这意味着我不能有混合内容,如:带有混合内容的WPF按钮上的鼠标移过样式
<Button
<Button.Content>
<StackPanel Orientation="Horizontal">
<Path Margin="3" Width="12.375" Height="9.70833" Canvas.Left="0" Canvas.Top="0"
Stretch="Fill" Fill="#FF115485"
Data="F1 M 18.8333,7.08333L 16.7083,4.91667L 10.5,10.5417L 8.52083,8.6875L 6.45833,10.4792L 10.4792,14.625L 18.8333,7.08333 Z "/>
<TextBlock Margin="3">Hello</TextBlock>
</StackPanel>
</Button.Content>
</Button>
为了改善这种情况,我然后把ContentPresenter
回来,和我(纯文本)按钮指定ContentTemplate
这样的:
<Button IsDefault="True" Content="Text only Button"
ContentTemplate="{StaticResource TextButtonTemplate}"
Command="{Binding ...}"
CommandParameter="{...}" />
并与Template
定义如下。此模板仅适用于带有文本内容的Button
,并根据混合内容的需要定义其他模板。
<DataTemplate x:Key="TextButtonTemplate">
<TextBlock Text="{TemplateBinding Content}"
Foreground="{Binding Path=Foreground,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Button}}" />
</DataTemplate>
有谁知道是否有一种方法,我可以通过保持所需的鼠标悬停风格进一步改善这一点,而无需定义自定义模板?
谢谢你的回答。我以前没有做过任何与遗传属性有关的事情。不幸的是,我的TextBlocks确实设置了自己的颜色,因为我不希望它们使用系统默认值。我可能需要在该问题上发布一个新问题..... – 2009-11-04 00:22:00
不适合我。 – flq 2012-07-27 10:46:07