0

每次用户按下按钮时,我都想更改按钮的背景图像。我已将 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; 帮助,拜托!

4

2 回答 2

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 帖子

于 2012-06-17T06:49:11.283 回答
0

有几种方法可以改变图片:

  1. 重新定义按钮控件模板并使用VisualStateManager

  2. 重新定义控件模板并使用Trigger

  3. 您可以尝试将按钮的内容绑定到它的MouseOver属性:鼠标悬停时隐藏一个图像并显示另一个图像。

于 2012-06-17T07:11:02.540 回答