wpf 如何使用 XAML 中的触发器更改路径填充(在按钮上)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/14562186/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to change a path fill (on a button) with triggers in XAML
提问by Yasi
I have a button with a path as icon,i want to change the fill of the path when the mouse is over the whole button (not only the path). Thanks.
我有一个带有路径作为图标的按钮,当鼠标悬停在整个按钮上时(不仅是路径),我想更改路径的填充。谢谢。
<Button Name="Test_Button"
Width="220"
Height="80"
Padding="2">
<Canvas Width="76"
Height="76"
Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
<Path Canvas.Left="19"
Canvas.Top="19"
Width="38"
Height="38"
Data="F1 M 35,19L 41,19L 41,35L 57,35L 57,41L 41,41L 41,57L 35,57L 35,41L 19,41L 19,35L 35,35L 35,19 Z "
Stretch="Fill">
<Path.Style>
<Style TargetType="{x:Type Path}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Path.Fill" Value="Red" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Path.Fill" Value="Gray" />
</Trigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
</Canvas>
</Button>
回答by Clemens
You may bind Path.Fillto the Foregroundproperty of the Button and modify the Foreground in a Button Style:
您可以绑定Path.Fill到Button的Foreground属性并修改 Button 样式中的 Foreground:
<Button Name="Test_Button" Width="220" Height="80" Padding="2">
<Canvas Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
<Path Canvas.Left="19" Canvas.Top="19" Width="38" Height="38" Stretch="Fill"
Fill="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}"
Data="F1 M 35,19L 41,19L 41,35L 57,35L 57,41L 41,41L 41,57L 35,57L 35,41L 19,41L 19,35L 35,35L 35,19 Z">
</Path>
</Canvas>
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Foreground" Value="Gray" />
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>

