[英]How to change\set background image of a button in C# WPF code?
我试图将按钮的背景图像更改为其他图像,但是遇到一些错误。 这是我在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>
和我的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;
}
我在xaml上遇到的错误是“文件'Images \\ logo.png'不是项目的一部分,或者其'Build Action'属性未设置为'Resource'。有人可以帮我解释一下,谢谢
在构建操作中,您可以将图像文件标记为内容或资源。 根据您选择的图像,在ImageBrush中使用图像的语法是不同的。
这是一个标记为content的图像文件。
要将按钮背景设置为此图像,请使用以下代码。
var brush = new ImageBrush();
brush.ImageSource = new BitmapImage(new Uri("Images/ContentImage.png",UriKind.Relative));
button1.Background = brush;
这是一个标记为resource的图像文件。
要将按钮背景设置为资源图像,请使用以下代码。
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;
我在下面提供了一个代码片段,将代码片段中提到的样式赋予按钮或切换按钮,然后您将完全由XAML控制更改后的背景……无需其他编码。 我并没有给出所有代码,只是试图理解背后的逻辑;)
<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>
如果不包含,则在项目中包含文件“ Image \\ Logo.png”。 然后通过访问该文件的属性选项卡(右键单击)将其构建动作设置为“资源”。
另外,我不确定您要在按钮的Click处理程序中尝试做什么。 您已经在XAML中设置了背景图片。 除非您在Click处理程序中将其设置为其他图像,否则不需要该代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.