我有一个包含路径和文本的按钮.就像这样
这是我已经完成的Xaml文件
<Button Grid.Row="1" Grid.Column="0" Style="{StaticResource DashBordMenuButton}" >
<StackPanel >
<Path Name="DIcon1" Data="{StaticResource IconReporting}" Fill="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" HorizontalAlignment="Center" ></Path>
<TextBlock HorizontalAlignment="Center" Margin="0,10,0,0" > DASHBORD</TextBlock>
<TextBlock LineHeight="25" TextWrapping="Wrap" LineStackingStrategy="BlockLineHeight" Margin="0,20,0,0" Text="Minir All Servers,Clients and Activies"></TextBlock>
</StackPanel>
</Button>
Run Code Online (Sandbox Code Playgroud)
样式
<Style x:Key="DashBordMenuButton" TargetType="Button">
<Setter Property="Margin" Value="10"></Setter>
<Setter Property="Background" Value="White"/>
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border" BorderThickness="1,1,1,4" BorderBrush="Gray" Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#FF36D8E0"/>
<Setter Property="Foreground" Value="White"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
在悬停它的工作正常我想要的.但默认路径图标也变成黑色而不是白色.我可以提前解决这个问题
您的路径Forground通过XAML下方的按钮颜色填充
Fill="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}"
Run Code Online (Sandbox Code Playgroud)
所以,在你的style触发器,Hover在Forground你的Button是默认的黑色.你可以在触发器开始之前添加一个setter来改变它.添加setter为Forground您的Button象下面这样.
<Style x:Key="DashBordMenuButton" TargetType="Button">
<Setter Property="Margin" Value="10"></Setter>
<Setter Property="Background" Value="White"/>
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Foreground" Value="#FF36D8E0"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border" BorderThickness="1,1,1,4" BorderBrush="Gray" Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#FF36D8E0"/>
<Setter Property="Foreground" Value="White"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
增加了一个setter以style
<Setter Property="Foreground" Value="#FF36D8E0"></Setter>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
717 次 |
| 最近记录: |