C# 单击按钮后如何更改图像源?

C# 单击按钮后如何更改图像源?,c#,wpf,image,C#,Wpf,Image,我正在使用图像作为按钮。因此,默认情况下,我需要图像源为/image1.png,当我单击图像时,它将生成if函数,并将其图像源更改为/image2.png。我正确地更改了图像,问题是当第一次单击图像时,我必须单击两次图像才能进行更改 这就是我正在使用的: public MainWindow() { InitializeComponent(); IsPlaying = false; //PlayBtn.Source = (ImageSourc

我正在使用
图像
作为按钮。因此,默认情况下,我需要图像源为
/image1.png
,当我单击图像时,它将生成
if
函数,并将其图像源更改为
/image2.png
。我正确地更改了图像,问题是当第一次单击图像时,我必须单击两次图像才能进行更改

这就是我正在使用的:

public MainWindow()
    {
        InitializeComponent();
        IsPlaying = false;
        //PlayBtn.Source = (ImageSource)new ImageSourceConverter().ConvertFrom(@"C:\Users\myusername\Documents\Visual Studio 2013\Projects\Project1\Project1WPF\image1.png");
    }

private void PlayBtn_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if(IsPlaying == false)
        {

            PlayBtn.Source = (ImageSource)new ImageSourceConverter().ConvertFrom(@"C:\Users\myusername\Documents\Visual Studio 2013\Projects\Project1\Project1WPF\image1.png");
            IsPlaying = true;
        }else if(IsPlaying == true)
        {

            PlayBtn.Source = (ImageSource)new ImageSourceConverter().ConvertFrom(@"C:\Users\myusername\Documents\Visual Studio 2013\Projects\Project1\Project1WPF\image2.png");
            IsPlaying = false;
        }       

要解决问题,只需正确设置初始状态。就目前情况而言,您有:

  • 图像以“image1”开头
  • 构造函数将
    isplay
    设置为
    false
  • 你点击按钮
  • 处理程序会运行,因为
    isplay
    false
    ,所以图像被设置为“image1”(您的第一个块)
  • isplay
    设置为
    true
  • 你再按一下按钮
  • 处理程序再次运行,因为
    isplay
    true
    图像设置为“image2”
  • 因此,要么翻转当前值为
    false
    时设置的图像,要么将初始值设置为
    true
    ,以获得您描述的行为


    顺便说一句,您可能根本不应该在代码背后这样做。
    Source
    属性应该绑定到视图模型(通过转换器),按钮的
    命令将更改该源。

    Ok,那么我应该将初始值更改为true?对吗?@ChrisCreateBoss可能,只要这在程序的其余部分有意义。