我正在尝试创建一个按钮,当用户单击该按钮时,它会改变图标的颜色(从白色变为黑色)。我已经在用户控件资源中为该按钮预设了一个样式,但我不想修改它。我只需要改变图标的颜色,其中我使用了两个颜色不同的相同图像。
<UserControl.Resources>
<!--Extended Button Style from Infragistics MetroDark Style-->
<Style TargetType="{x:Type Button}"
BasedOn="{StaticResource ButtonStyle}">
<Setter Property="Margin" Value="10"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="Cursor" Value="Hand"/>
<Style.Resources>
<Style TargetType="Rectangle">
<Setter Property="RadiusX" Value="8"/>
<Setter Property="RadiusY" Value="8"/>
</Style>
</Style.Resources>
<Style.Triggers>
<Trigger Property="Button.IsPressed"
Value="True">
<Setter x:Name="ImageDefault"
Property="Visibility"
Value="Collapsed"/>
<Setter x:Name="ImageOnClick"
Property="Visibility"
Value="Visible"/>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
下面是我的按钮,在用户控制资源之后:
<Button Command="{Binding NavigateCommand}"
CommandParameter="CalibrationMain">
<StackPanel>
<Image Name="ImageDefault"
Source="pack://application:,,,/Images;component/Icons/UnknownSize/CalibrationIconWhite.png"
Width="100"
Height="100"
Visibility="Visible"/>
<Image Name="ImageOnClick"
Source="pack://application:,,,/Images;component/Icons/UnknownSize/CalibrationIconBlack.png"
Width="100"
Height="100"
Visibility="Collapsed"/>
<TextBlock HorizontalAlignment="Center"
VerticalAlignment="Top"
Text="Calibration"
FontSize="18"/>
</StackPanel>
</Button>
当用户在按钮上按下鼠标左键时,如何使“ImageDefault”折叠并使“ImageOnClick”可见,而不更改父样式?有没有更有效和更有组织的方法来实现这一点?
由于作用域的原因,我无法在用户控件资源中使用x:Name或TargetName使其工作。
任何帮助都是感激不尽的!
1条答案
按热度按时间yi0zb3m41#
您没有回答我关于您希望对哪一家酒店做出React的更多澄清要求:ButtonBase.IsPressed property或ToggleButton.IsChecked property。
在您显示的样式XAML中,您尝试在
IsPressed
属性上创建触发器,因此我假设您需要ButtonBase.IsPressed
。下面是一个XAML示例:
还可以将按钮内容的可视化转换为通用样式:
第一次