Я создаю проект WPF на C#. У меня есть button
, чей background image
я хочу изменить, когда нажата кнопка button
. Однако, во-первых, я хочу сравнить текущий background image
button
с другим, а затем изменить его. Это мой код:Сравнить фоновое изображение кнопки на другое изображение в WPF
private void homeLightsButton_Click(object sender, RoutedEventArgs e)
{
//image for Lights ON
Uri lightsOn = new Uri("images/homeLightsOn.jpg", UriKind.Relative);
StreamResourceInfo streamInfo = Application.GetResourceStream(lightsOn);
BitmapFrame temp = BitmapFrame.Create(streamInfo.Stream);
var brush = new ImageBrush();
brush.ImageSource = temp;
//image for Lights OFF
Uri lightsOff = new Uri("images/homeLightsOff.jpg", UriKind.Relative);
StreamResourceInfo streamInfo1 = Application.GetResourceStream(lightsOff);
BitmapFrame temp1 = BitmapFrame.Create(streamInfo.Stream);
var brush1 = new ImageBrush();
brush1.ImageSource = temp1;
if (homeLightsButton.Background == brush)
{
homeLightsButton.Background = brush1;
}
else
{
homeLightsButton.Background = brush;
}
}
Проблема находится внутри if
заявления; от того, что я понимаю, так как я сравниваю background image
с другим image
. Я искал форумы, но ничего не нашел. Есть идеи?
Как это могло бы работать? Вы сравниваете 'homeLightsButton.Background' с новым созданным экземпляром ImageBrush. Это сравнение всегда будет возвращать 'false'. Кроме того, почему вы создаете BitmapFrame таким странным образом? В WPF вы обычно устанавливаете ** Build Action ** файла изображения (в проекте Visual Studio) на ** Resource ** и загружаете его с помощью [URI файла ресурса] (https://msdn.microsoft .com/en-us/library/aa970069 (v = vs.110) .aspx), например 'var bitmap = new BitmapImage (новый Uri (" pack: // application: ,,,/images/homeLightsOn.jpg ")); ' – Clemens