How to change \ set the background image of a button in C # WPF code?

I am trying to change the background image of my button to another image, and I encountered some errors. This is the code I have on my xaml:

<Button x:Name="Button1" Width="200" Height="200" Content="Button1" Margin="0,0,0,400"> <Button.Background> <ImageBrush **ImageSource ="Images/AERO.png"** ></ImageBrush> </Button.Background> </Button> 

and my cs:

  private void Button1_Click_1(object sender, RoutedEventArgs e) { var brush = new ImageBrush(); brush.ImageSource = new BitmapImage(new Uri("Images/AERO.png")); Button1.Background = brush; } 

The error I have in my xaml is that the “Images \ logo.png” file is not part of the project or its “Build Action” property is not set to “Resource.” Can someone help me explain, thanks

+4
source share
3 answers

In the assembly action, you can mark the image file as content or as a resource. The syntax for using an image in ImageBrush differs depending on which one you choose.

Here is the image file marked as content .

Image, marked as content

To set the button background to this image, use the following code.

  var brush = new ImageBrush(); brush.ImageSource = new BitmapImage(new Uri("Images/ContentImage.png",UriKind.Relative)); button1.Background = brush; 

Here is the image file marked as a resource .

Image, marked as resource

To set the button background to the resource image, use the following code.

  Uri resourceUri = new Uri("Images/ResourceImage.png", UriKind.Relative); StreamResourceInfo streamInfo = Application.GetResourceStream(resourceUri); BitmapFrame temp = BitmapFrame.Create(streamInfo.Stream); var brush = new ImageBrush(); brush.ImageSource = temp; button1.Background = brush; 
+13
source

Below is a code snippet describing the style mentioned in the code snippet, button or toggle button, then you have to change the background, fully controlled by XAML ... no other encoding is required. I don't want all the code just trying to understand the logic;)

 <Style x:Key="KeyStopButtonStyle" TargetType="{x:Type Button}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Border TextBlock.Foreground="{TemplateBinding Foreground}" x:Name="Border" CornerRadius="1" BorderThickness="1"> <Border.Background> <ImageBrush ImageSource= "..\Images\ButtonImages\StopButton.png" Stretch="Uniform"/> </Border.Background> <Border.Effect> <DropShadowEffect/> </Border.Effect> </Border> <ControlTemplate.Triggers> <Trigger Property="IsPressed" Value="true"> <Setter TargetName="Border" Property="Border.Effect" Value="{x:Null}"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="KeyPlayPauseButtonStyle" TargetType="{x:Type ToggleButton}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ToggleButton"> <Border TextBlock.Foreground="{TemplateBinding Foreground}" x:Name="Border" CornerRadius="1" BorderThickness="1"> <Border.Background> <ImageBrush ImageSource= "..\Images\ButtonImages\PlayButton.png" Stretch="Uniform"/> </Border.Background> <Border.Effect> <DropShadowEffect/> </Border.Effect> </Border> <ControlTemplate.Triggers> <Trigger Property="IsChecked" Value="true"> <Setter TargetName="Border" Property="Border.Background"> <Setter.Value> <ImageBrush ImageSource= "..\Images\ButtonImages\PauseButton.png" Stretch="Uniform"/> </Setter.Value> </Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> 
+2
source

If it is not included, include the file "Image \ Logo.png" in the project. Then set the build action for it to “Resource” by visiting the properties tab for this file (right-click).

Setting action to build resource

Also, I'm not sure what you are trying to make buttons in the Click handler. You are already setting the background image to XAML. If you do not set it to another image in the Click handler, this code is not needed.

+1
source

All Articles