通过点击WPF,C#来设置和更改按钮图像
本文关键字:设置 图像 按钮 WPF | 更新日期: 2023-09-27 18:12:54
我有一个类,它在一个数组中包含8个BitmapImage
Images以以下方式添加到类构造函数中:
public SymbolCollection(string[] symbolNames)
{
Symbols = new BitmapImage[8];
for (int i = 0; i < Symbols.Length; i++)
{
Symbols[i] = new BitmapImage();
Symbols[i].BeginInit();
Symbols[i].UriSource = new Uri(@"/Resources/" + symbolNames[i] + ".png", UriKind.Relative);
Symbols[i].EndInit();
}
}
按钮的ImageSource设置如下:
<Button x:Name="buttonPlayer1" HorizontalAlignment="Left" Height="80" Margin="44,387,0,0" VerticalAlignment="Top" Width="80" Click="OnPlayerSymbolClick">
<Button.Template>
<ControlTemplate>
<Image Source="{Binding Content}"/>
</ControlTemplate>
</Button.Template>
</Button>
我试图在MainWindow((方法中将图像设置为按钮,并在OnPlayerSymbolClick((方法中进行更改,但图像甚至没有显示:
public MainWindow()
{
this.InitializeComponent();
SetSymbolCollection();
Uri u = symbolCollectionHolder[0].Symbols[0].UriSource;
Debug.WriteLine(u.ToString());
Image i = new Image();
BitmapImage bmp = new BitmapImage();
bmp.UriSource = u;
i.Source = bmp;
buttonPlayer1.Content = i;
}
private void OnPlayerSymbolClick(object sender, RoutedEventArgs e)
{
ImageBrush imagebrush = new ImageBrush();
imagebrush.ImageSource = symbolCollectionHolder[0].Symbols[1];
buttonPlayer1.Background = imagebrush;
buttonPlayer1.Content = imagebrush;
Debug.WriteLine(buttonPlayer1.Background.ToString());
Debug.WriteLine(imagebrush.ImageSource.ToString());
}
png-s的Build Action设置为Resource,并且项目中有一个Resources文件夹。
当图像资源文件要以代码隐藏的方式加载到BitmapImage中时,您应该使用资源文件包URI:
Symbols[i] = new BitmapImage(new Uri(
"pack://application:,,,/Resources/" + symbolNames[i] + ".png"));
除此之外,当按钮的模板不使用这些属性时,设置"内容"或"背景"属性是毫无意义的。
你可能想写这样的模板:
<Button x:Name="buttonPlayer1" ...>
<Button.Template>
<ControlTemplate TargetType="Button">
<Image Source="{TemplateBinding Content}"/>
</ControlTemplate>
</Button.Template>
</Button>
这将需要CCD_ 1(或派生对象(作为按钮的内容的值。
你可以直接通过你的一个符号:
buttonPlayer1.Content = Symbols[0];