我Button
Style
在我的应用程序中应用了一个标准,该标准指定了一种将文本内容从白色更改为黑色的鼠标悬停样式。为了实现这一点,我尝试修改按钮模板,删除ContentPresenter
并将其替换为TextBlock
. 但是,这意味着我不能有混合内容,例如:
<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
具有文本内容的 s,其他模板根据需要定义为混合内容。
<DataTemplate x:Key="TextButtonTemplate">
<TextBlock Text="{TemplateBinding Content}"
Foreground="{Binding Path=Foreground,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Button}}" />
</DataTemplate>
有谁知道是否有一种方法可以通过保持所需的鼠标悬停样式来进一步改进这一点,而无需定义自定义模板?