每次用户按下按钮时,我都想更改按钮的背景图像。 我已将ImageSource设置为我的图片。当鼠标悬停在按钮上时,我的按钮不会显示图像。如何设置图片,以便即使鼠标悬停在按钮上仍然带有图像?
<Button x:Name="recordButton" Content="" HorizontalAlignment="Left" Height="50" Margin="60,45,0,0" VerticalAlignment="Top" Width="50" Click="recordButton_Click">
<Button.Background>
<ImageBrush ImageSource="play.png"/>
</Button.Background>
</Button>
另一个问题。如何改变这两张照片? 他们的名字是“play.png”和“stop.png”,两者都位于参考资料中。
private bool recordStarted = false;
private void recordButton_Click(object sender, RoutedEventArgs e)
{
recordStarted = !recordStarted;
if(recordStarted)
{
ImageBrush brush1 = new ImageBrush();
BitmapImage image = Properties.Resources.stop;
brush1.ImageSource = image;
recordButton.Background = brush1;
}
}
我试过了,但VS找不到BitmapImage image = Properties.Resources.stop;
求救!
答案 0 :(得分:1)
我建议不要将背景设置为图像,而是将内容设置为图像
<Button x:Name="recordButton" HorizontalAlignment="Left" Height="50" Margin="60,45,0,0" VerticalAlignment="Top" Width="50" Click="recordButton_Click">
<Image Source="play.png"/>
</Button>
如果要更改图像,可以在文本中执行此操作,最简单的方法是使用编译为资源的图像而不是资源文件中的图像
(recordButton.Content as Image).Source = new BitmapImage(new Uri("Images/stop.png", UriKind.Relative));
如果您想使用资源文件,请参阅此SO post
答案 1 :(得分:0)
有一些方法可以更改图片:
重新定义按钮控件模板并使用VisualStateManager。
重新定义控件模板并使用Trigger s。
您可以尝试将按钮的内容绑定到它的MouseOver
属性:当鼠标悬停时隐藏一个图像并显示另一个图像。