私はC#でWPFプロジェクトを作成しています。私はbutton
を持っています。button
をクリックすると、が変更されます。しかし、まず、button
の現在のbackground image
を別のものと比較し、それを変更したいと考えています。これは私のコードです:ボタンの背景イメージと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では、通常、(Visual Studioプロジェクトの)画像ファイルの**ビルドアクション**を**リソース**に設定し、それを[リソースファイルパックURI](https://msdn.microsoft)でロードします。新しいBitmapImage(新しいUri( "pack:// application:,,,/images/homeLightsOn.jpg")のように.com/en-us/library/aa970069(v = vs.110).aspx) ); ' – Clemens